#include<bits/stdc++.h>
using namespace std;
struct node{
long long ol[10];
long long fg;
}s[500010];
long long tot=1,cs=1;
long long n,m,t;
void build(string y){
cs=1;
for (int i=0;i<y.size();i++){
if (s[cs].ol[y[i]]==0){
s[cs].ol[y[i]]=++tot;
}
cs=s[cs].ol[y[i]];
s[cs].fg++;
}
}
long long q(string sp){
cs=1;
for (int i=0;i<sp.size();i++){
if (s[cs].ol[sp[i]]==0){
return 0;
}
cs=s[cs].ol[sp[i]];
}
return s[cs].fg;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> m >> n;
for (int i=1;i<=n;i++){
for (int j=0;j<10;j++){
s[i].ol[j]=0;
s[i].fg=0;
}
}
for (int i=1;i<=m;i++){
long long x;
cin >> x;
string yh="";
for (int j=1;j<=x;j++){
long long y;
cin >> y;
yh+=char(y+'0');
}
build(yh);
}
for (int i=1;i<=n;i++){
long long x;
cin >> x;
string sl="";
for (int j=1;j<=x;j++){
long long y;
cin >> y;
sl+=char(y+'0');
}
cout << q(sl) << '\n';
}
return 0;
}