#include #include using namespace std; struct arr { int a,b,c,d; void read(){scanf("%d.%d.%d.%d",&a,&b,&c,&d);} friend int operator < (arr A,arr B) { if (A.a!=B.a) return A.aM; int Test,n,m,T,i,j; arr Union(arr A,arr B){return (arr){A.a&B.a,A.b&B.b,A.c&B.c,A.d&B.d};} int main() { scanf("%d",&Test); while (Test--) { scanf("%d%d",&n,&m); for (i=1;i<=n;i++) A[i].read(); printf("Case #%d:\n",++T); for (j=1;j<=m;j++) { B.read();M.clear(); for (i=1;i<=n;i++) { tmp=Union(A[i],B); M.insert(tmp); } printf("%d\n",M.size()); } } }