#include<cstdio>
#include<cstring>
#define p 29
#define debug(x) printf("%I64u ",x);
using namespace std;
typedef unsigned long long UL;
const int N=1005;
UL chk,Q[N<<1],ts[N<<2],hs[N][N<<2],a[N<<1],base[N];
int n,m,xlen[2][N<<1],len[N<<1];
int Ans[N<<1],ans[N<<1];
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
return x*f;
}
UL query(int x,int y,int id){
return hs[id][y]-hs[id][x-1]*base[y-x+1];
}
int main(){
freopen("name.in","r",stdin);
freopen("name.out","w",stdout);
n=read();m=read();
for(int i=1,x1;i<=n;i++){
x1=read();xlen[0][i]=x1;hs[i][0]=0;
for(int j=1;j<=x1;j++) a[j]=read();
for(int j=0;j<=x1;j++) ts[j]=0;
for(int j=1;j<=x1;j++) ts[j]=ts[j-1]*p+a[j];
for(int j=1;j<=x1;j++) hs[i][j]=ts[j];
x1=read();xlen[1][i]=x1;hs[i][xlen[0][i]+1]=0;
for(int j=1;j<=x1;j++) a[j]=read();
for(int j=0;j<=x1;j++) ts[j]=0;
for(int j=1;j<=x1;j++) ts[j]=ts[j-1]*p+a[j];
for(int j=1;j<=x1;j++) hs[i][j+xlen[0][i]+1]=ts[j];
}
for(int i=1,x1;i<=m;i++){
x1=read();len[i]=x1;
for(int j=1;j<=x1;j++) a[j]=read();
for(int j=1;j<=x1;j++) Q[i]=Q[i]*p+a[j];
}
base[0]=1;
for(int i=1;i<=100;i++) base[i]=base[i-1]*p;
for(int i=1;i<=m;i++){//点名的串
for(int k=1;k<=n;k++){//姓和名两个串
int flag=0;
for(int j=1;j<=xlen[0][k]-len[i]+1;j++){
chk=query(j,j+len[i]-1,k);
if(chk==Q[i]){
Ans[i]++;ans[k]++;flag=1;break;
}
}
if(flag) continue;
for(int j=1;j<=xlen[1][k]-len[i]+1;j++){
chk=query(j+xlen[0][k]+1,j+xlen[0][k]+len[i],k);
if(chk==Q[i]){
Ans[i]++;ans[k]++;break;
}
}
}
}
for(int i=1;i<=m;i++) printf("%d\n",Ans[i]);
for(int i=1;i<=n;i++) printf("%d ",ans[i]);
return 0;
}