#include<bits/stdc++.h>
using namespace std;
const int L=2,N=50005;
int n,m,tot;
struct wasd{
int son[L],f;
}t[N*100];
int Give(char w){
return (w-'0');
}
void update(string z){
int id,len=z.length(),u=0;
for(int i=0;i<len;i++){
id=Give(z[i]);
if(!t[u].son[id])t[u].son[id]=++tot;
u=t[u].son[id];
}
t[u].f++;
}
int query(string z){
int u=0,len=z.length(),sum=0;
for(int i=0;i<len;i++){
int id=Give(z[i]);
if(t[u].son[id]==0)return sum;
u=t[u].son[id];
sum+=t[u].f;
}
return sum;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>m>>n;
for(int i=1,c;i<=m;i++){
char w;
string z="";
cin>>c;
for(int j=1;j<=c;j++){
cin>>w;
z+=(w+'0');
}
update(z);
}
for(int i=1,c;i<=n;i++){
char w;
string z="";
cin>>c;
for(int j=1;j<=c;j++){
cin>>w;
z+=(w+'0');
}
cout<<query(z)<<"\n";
}
return 0;
}