#include<bits/stdc++.h>
using namespace std;
int tot=1;
struct tree{
int son[2],cnt,end;
}a[500005];
int n,m;
void build(){
int now=1,len,num;
cin>>len;
for(int i=1;i<len;i++){
cin>>num;
if(!a[now].son[num]) a[now].son[num]=++tot;
now=a[now].son[num];
a[now].cnt++;
}
cin>>num;
if(!a[now].son[num]) a[now].son[num]=++tot;
now=a[now].son[num];
a[now].end++;
}
void find(){
int len,now=1,num,ans=0,flag=0;
cin>>len;
for(int i=1;i<=len;i++){
cin>>num;
if(a[now].son[num]) now=a[now].son[num];
else flag=1;
if(!flag) ans+=a[now].end;
}
cout<<ans+a[now].cnt<<'\n';
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) build();
for(int i=1;i<=m;i++) find();
}