#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 7;
const int MAXM = MAXN * 2;
const double pi = acos(-1.0);
const int mod = 1000000007;
string s[MAXN], ss[5050];
map<string, int> mp, st;
int dfs(string s, string tag, int t) {
  if (t == s.size()) {
    if (mp[tag] && !st[tag]) {
      st[tag] = 1;
      return mp[tag];
    } else
      return 0;
  }
  int ans = 0;
  if (s[t] != '?') {
    tag.push_back(s[t]);
    ans += dfs(s, tag, t + 1);
  } else {
    ans += dfs(s, tag, t + 1);
    for (int i = 0; i < 5; i++) {
      string f = tag;
      f.push_back('a' + i);
      ans += dfs(s, f, t + 1);
    }
  }
  return ans;
}
int main() {
  std::ios::sync_with_stdio(false);
  int n, m;
  while (cin >> n >> m) {
    mp.clear();
    for (int i = 1; i <= n; i++) {
      cin >> s[i];
      mp[s[i]]++;
    }
    int ans;
    for (int i = 1; i <= m; i++) {
      st.clear();
      cin >> ss[i];
      string tag = "";
      ans = dfs(ss[i], tag, 0);
      printf("%d\n", ans);
    }
  }
}
