/* Beautiful Codes are MUCH better than 'Shorter' ones ! user : triveni date : 22/04/2018 time : 01:07:57 */ #include using namespace std; #define pii std::pair #define vi std::vector #define sz(v) (int)(v.size()) #define mp(a,b) make_pair(a,b) #define pb(a) push_back(a) #define each(it,s) for(auto it = s.begin(); it != s.end(); ++it) #define rep(i, n) for(int i = 0; i < (n); ++i) #define rep1(i, n) for(int i = 1; i <= (n); ++i) #define all(v) v.begin(), v.end() #define scan(n) scanf("%d", &n) #define scan2(n, m) scanf("%d%d", &n, &m) #define pin(n) printf("%d\n",n) #define pis(n) printf("%d ",n) #define pll(n) printf("%lld\n", n) #define X first #define Y second typedef long long ll; const ll mod = 1000000007; inline int pow_(ll a, int n, int p=mod){ int r=1;while(n){if(n&1)r=r*a%p;n>>=1;a=a*a%p;}return r;} inline int inv_(int a) {return pow_(a, mod-2, mod);} inline int add(int a, int b){a+=b;if(a>=mod)a-=mod;return a;} inline void adds(int& a, int b){a+=b;if(a>=mod)a-=mod;} inline int mul(int a, int b){return a*1ll*b%mod;} inline void muls(int& a, int b){a=a*1ll*b%mod;} inline int sub(int a, int b){a-=b;if(a<0)a+=mod;return a;} typedef bitset<100> bigInt; char tmpInp[10010]; bigInt getBigInt() { scanf("%s", tmpInp); int n = strlen(tmpInp); bigInt b; for (int i = 0; i < n; ++i) { int x = tmpInp[i]; if(x >= '0' && x <= '9') x -= '0'; else x = x - 'a' + 10; for (int j = 0; j < 4; ++j) { if(x & (1 << j)) b.set(i * 4 + j); } } return b; } int main() { int T; scan(T); while(T--) { int m, n, q; cin >> m >> n >> q; vector ans(m); rep(i, n) { bigInt b = getBigInt(); for (int j = 0; j < m; ++j) { if(!b.test(j)) ans[j] |= b; } } rep(i, m) ans[i].set(i); rep(i, m) ans[i] = ~ans[i]; while(q--) { bigInt b = getBigInt(); bigInt finalAns; for (int i = 0; i < m; ++i) if(b.test(i)) { finalAns |= ans[i]; } int ans = 0; rep(i, m) ans += finalAns.test(i); pin(ans); } } return 0; }