#include #include using namespace std; #define MAXN 1000 #define MAXM 50 typedef struct { int a,b,c,d; } IP; IP ip[MAXN+5], ans[MAXN+5], ip1; int count [MAXM+5]; int main() { // freopen ("input.txt","r",stdin); int t, t1, k, k1; scanf ("%d", &t); for (t1 = 1; t1 <= t; t1 ++) { int i, j, n, m; scanf ("%d %d", &n, &m); for (i = 0; i < n; i ++) scanf ("%d.%d.%d.%d", &ip[i].a,&ip[i].b,&ip[i].c,&ip[i].d); for (i = 0; i < m; i ++) { scanf ("%d.%d.%d.%d", &ip1.a,&ip1.b,&ip1.c,&ip1.d); count[i] = 0; for (j = 0; j < n; j ++) { ans[j].a = ip[j].a & ip1.a; ans[j].b = ip[j].b & ip1.b; ans[j].c = ip[j].c & ip1.c; ans[j].d = ip[j].d & ip1.d; for (k = 0; k < j; k ++) { if (ans[j].a == ans[k].a && ans[j].b == ans[k].b && ans[j].c == ans[k].c && ans[j].d == ans[k].d) break; } if (k == j) count[i] ++; } } printf ("Case #%d:\n", t1); for (i = 0; i < m; i ++) { printf ("%d\n", count[i]); } } return 0; }