#include<bits/stdc++.h> usingnamespacestd; constint MAXM = 500005; constint MAXN = 500005; int trie[MAXM][3]; int num[MAXN]; int book[MAXN]; int sum[MAXN]; int m, n; int tot = 1;
voidinsert(int cnt){ int root = 1; for(int i = 0; i < cnt; i++) { int idx = num[i]; if(trie[root][idx] == 0) { trie[root][idx] = ++tot; } root = trie[root][idx]; sum[root]++; } book[root]++; }
intquery(int cnt){ int root = 1, ret = 0; for(int i = 0; i < cnt; i++) { int idx = num[i]; if(trie[root][idx] == 0) { return ret; } root = trie[root][idx]; ret += book[root]; } return ret + sum[root] - book[root]; }
intmain(){ memset(book, 0, sizeof(book)); memset(sum, 0, sizeof(sum)); scanf("%d%d", &m, &n); for(int i = 0; i < m; i++) { int cnt; scanf("%d", &cnt); for(int j = 0; j < cnt; j++) { scanf("%d", &num[j]); } insert(cnt); } for(int i = 0; i < n; i++) { int cnt; scanf("%d", &cnt); for(int j = 0; j < cnt; j++) { scanf("%d", &num[j]); } printf("%d\n", query(cnt)); } }