#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct ip { int a; int b; int c; int d; }; bool operator<(const ip &ip1,const ip &ip2) { if(ip1.a != ip2.a) return ip1.a < ip2.a; else if(ip1.b != ip2.b) return ip1.b < ip2.b; else if(ip1.c != ip2.c) return ip1.c < ip2.c; else return ip1.d < ip2.d; }; ip in[1001]; set res; int main() { // freopen("F:\\data.txt","r",stdin); int t; scanf("%d",&t); int m,n; ip temp; ip child; for(int i = 1; i <= t; ++i) { memset(in,0,sizeof(in)); printf("Case #%d:\n",i); scanf("%d%d",&n,&m); for(int j = 0; j < n; ++j) { scanf("%d.%d.%d.%d",&in[j].a,&in[j].b,&in[j].c,&in[j].d); } for(int j = 0; j < m; ++j) { res.clear(); scanf("%d.%d.%d.%d",&child.a,&child.b,&child.c,&child.d); for(int k = 0; k < n; ++k) { temp.a = child.a & in[k].a; temp.b = child.b & in[k].b; temp.c = child.c & in[k].c; temp.d = child.d & in[k].d; res.insert(temp); } printf("%d\n",res.size()); } } return 0; }