#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
vector<vector<int> > user;
int N,L,M,K;
bool vis[1010];
struct node{
int index;
int depth;
};
void bfs(int index){
memset(vis,false,sizeof(vis));
int cnt=0;
queue<node> q;
q.push(node{index,0});
vis[index]=true;
while(!q.empty()){
node top=q.front();
q.pop();
for(int i=0;i<user[top.index].size();i++){
if(vis[user[top.index][i]]==false&&top.depth<L){
q.push({user[top.index][i],top.depth+1});
vis[user[top.index][i]]=true;
cnt++;
}
}
}
printf("%d\n",cnt);
}
int main(){
int id;
scanf("%d%d",&N,&L);
user.resize(N+1);
for(int i=1;i<=N;i++){
scanf("%d",&M);
for(int j=0;j<M;j++){
scanf("%d",&id);
user[id].push_back(i);
}
}
scanf("%d",&K);
for(int i=0;i<K;i++){
scanf("%d",&id);
bfs(id);
}
}