#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <queue>
#define rep(i,j,k) for(int i=j;i<k;i++)
using namespace std;
struct node{int d,lay;};
vector<int> v[1100];
vector<node> user;
int vis[1100],cnt;
int n,k,m,a;
void dfs(int u,int dep){
if(dep>k) return;
cnt++;
vis[u]=1;
rep(i,0,v[u].size()){
if(vis[v[u][i]]==0){
dfs(v[u][i],dep+1);
}
}
}
int main(){
cin>>n>>k;
rep(i,1,n+1){
cin>>m;
rep(j,0,m){
cin>>a;
v[a].push_back(i);
}
}
cin>>m;
rep(i,0,m){
fill(vis,vis+1100,0);
cnt=0;
cin>>a;
queue<node> q;
node no={a,0};
q.push(no);
vis[a]=1;
while(!q.empty()){
node now = q.front();
q.pop();
for(int j=0;j<v[now.d].size();j++){
int neid = v[now.d][j];
if(vis[neid]==0 && now.lay<k){
node no={neid,now.lay+1};
q.push(no);
vis[no.d]=1;
cnt++;
}
}
}
printf("%d\n",cnt);
/*dfs(a,0);
printf("%d\n",cnt-1);*/
}
return 0;
}