#include <iostream>
//1076,bfs
#include<map>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
const int maxv = 1e3 +5;
struct node{
int id,layer;
};
vector<node> Adj[maxv];
int n, k;
int vis[maxv]={0};
int bfs(int v, int k){
int ans = 0;
queue<node> q;
node start;
start.id = v;
start.layer = 0;
vis[start.id] =1;
q.push(start);
while(!q.empty()){
node top = q.front();
q.pop();
int u = top.id;
for(int i =0; i < Adj[u].size();i++){
node next = Adj[u][i];
next.layer = top.layer +1;
if(vis[next.id] ==0 && next.layer<=k){
q.push(next);
vis[next.id] = 1;
ans++;
}
}
}
return ans;
}
int main()
{
freopen("1076.txt","r",stdin);
cin>>n>>k;
node user;
for(int i =1;i<=n;i++){//節點編號從1開始
user.id =i;
int m,a;
cin>>m;
for(int j =0;j<m;j++){
cin>>a;
Adj[a].push_back(user);
}
}
int query , s;
cin>>query;
for(int i = 0; i < query;i++){
memset(vis,0,sizeof(vis));//數組初始化
cin>>s;
int ans = bfs(s,k);
printf("%d\n",ans);
}
//cout << "Hello world!" << endl;
return 0;
}