#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
struct node {
  int cnt;
  vector<int> e;
  node() {
    e.resize(6, -1);
    cnt = 0;
  }
};
vector<node> t;
void add(string s) {
  int cur = 0;
  for (int i = 0; i < s.size(); i++) {
    int b = s[i] - 'a';
    if (t[cur].e[b] == -1) {
      t[cur].e[b] = t.size();
      t.push_back(node());
    }
    cur = t[cur].e[b];
  }
  t[cur].cnt++;
}
string b;
set<int> st;
void get(int i, int cur) {
  if (i == b.size()) {
    st.insert(cur);
    return;
  }
  if (b[i] == '?') {
    for (int j = 0; j < 5; j++) {
      if (t[cur].e[j] == -1) continue;
      get(i + 1, t[cur].e[j]);
    }
    get(i + 1, cur);
  } else {
    int B = b[i] - 'a';
    if (t[cur].e[B] == -1) return;
    cur = t[cur].e[B];
    get(i + 1, cur);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  t.push_back(node());
  for (int i = 0; i < n; i++) {
    string a;
    cin >> a;
    add(a);
  }
  for (int i = 0; i < m; i++) {
    cin >> b;
    st.clear();
    get(0, 0);
    int ans = 0;
    for (int j : st) ans += t[j].cnt;
    cout << ans << '\n';
  }
}
