#include <cstdio>
#include <cstring>
const int MAXN=500001;
struct node
{
int s;
int link[2];
}t[MAXN];
int ans;
int nt;
int n,m;
int sum[MAXN];
void add(int len)
{
int x;
int ansm=0;
int p=0;
for(int i=1;i<=len;i++)
{
scanf("%d",&x);
int zz=x;
if(t[p].link[zz]==0)
t[p].link[zz]=++nt;
p=t[p].link[zz];
sum[p]++;
}
t[p].s++;
}
int Query(int len)
{
int x;
int ans=0;
int p=0;
for(int i=1;i<=len;i++)
{
scanf("%d",&x);
int zz=x;
if(!t[p].link[zz])
{
for(i=i+1;i<=len;i++)
scanf("%d",&x);
return ans;
}
p=t[p].link[x];
ans+=t[p].s;
}
return ans-t[p].s+sum[p];
}
int main()
{
char z[100]="";
scanf("%d%d",&n,&m);
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
add(x);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&x),printf("%d\n",Query(x));
}
}