#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int SINF = 0x7fffffff;
const long long LINF = 0x3fffffffffffffff;
const long long SLINF = 0x7fffffffffffffff;
const int MAXN = 4107;
const int MAXW = 15;
const int RES[6][2][2] = {0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0,
                          1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1};
const int CAN[6][2] = {1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1};
const int MSK[6][2] = {0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1};
const int ND[6][2] = {0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0};
int n, m, w;
int ACAN[6][MAXN], AMSK[6][MAXN], AND[6][MAXN];
int cmsk[6];
int a[MAXN], ps[MAXN][MAXN];
char s[MAXW];
int tp[MAXN];
void init();
void input();
void inputq();
void work();
int main() {
  init();
  input();
  work();
}
void init() { ios::sync_with_stdio(false); }
void input() {
  scanf("%d%d%d", &w, &n, &m);
  int x;
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &x);
    ++a[x];
  }
}
void inputq() { scanf("%s", s); }
void work() {
  n = 1 << w;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j) ps[j][i & j] += a[i];
  int cbit, ctp;
  for (int i = 0; i < 6; ++i) {
    for (int j = 0; j < n; ++j) {
      for (int k = 0; k < w; ++k) {
        cbit = j >> k & 1;
        ACAN[i][j] |= CAN[i][cbit] << k;
        AMSK[i][j] |= MSK[i][cbit] << k;
        AND[i][j] |= ND[i][cbit] << k;
      }
    }
  }
  for (int _q = 0; _q < m; ++_q) {
    inputq();
    for (int i = 0; i < w; ++i)
      tp[i] = s[i] == 'A'   ? 0
              : s[i] == 'O' ? 1
              : s[i] == 'X' ? 2
              : s[i] == 'a' ? 3
              : s[i] == 'o' ? 4
                            : 5;
    reverse(tp, tp + w);
    memset(cmsk, 0, sizeof(cmsk));
    for (int i = 0; i < w; ++i) cmsk[tp[i]] |= 1 << i;
    int msk, val, ans = 0, ok;
    for (int i = 0; i < n; ++i) {
      msk = val = ok = 0;
      for (int j = 0; j < 6; ++j) {
        ok |= ACAN[j][i] & cmsk[j];
        msk |= AMSK[j][i] & cmsk[j];
        val |= AND[j][i] & cmsk[j];
      }
      if (ok == n - 1) {
        ans += a[i] * ps[msk][val];
      }
    }
    printf("%d\n", ans);
  }
}
