#include <bits/stdc++.h>
using namespace std;
const int inf = 2147483647;
bool isg[111];
int main() {
  string tt;
  cin >> tt;
  for (int i = 0; i < tt.size(); i++) {
    isg[tt[i] - 'a'] = 1;
  }
  string s;
  cin >> s;
  int xing = -1;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '*') {
      xing = i;
      break;
    }
  }
  int qq;
  cin >> qq;
  while (qq--) {
    string nw;
    cin >> nw;
    if (xing == -1) {
      bool flag = 0;
      if (nw.size() != s.size()) {
        puts("NO");
        continue;
      }
      for (int i = 0; i < s.size(); i++) {
        if (s[i] == '?') {
          if (!isg[nw[i] - 'a']) {
            flag = 1;
            break;
          }
        } else if (nw[i] != s[i]) {
          flag = 1;
          break;
        }
      }
      if (flag) {
        puts("NO");
      } else {
        puts("YES");
      }
    } else {
      bool flag = 0;
      if (nw.size() < s.size() - 1) {
        puts("NO");
        continue;
      }
      for (int i = 0; i < xing; i++) {
        if (s[i] == '?') {
          if (!isg[nw[i] - 'a']) {
            flag = 1;
            break;
          }
        } else if (nw[i] != s[i]) {
          flag = 1;
          break;
        }
      }
      for (int i = 1; i <= nw.size() - s.size() + 1; i++) {
        int j = xing + i - 1;
        if (isg[nw[j] - 'a']) {
          flag = 1;
          break;
        }
      }
      for (int i = xing + 1; i < s.size(); i++) {
        int j = nw.size() - s.size() + i;
        if (s[i] == '?') {
          if (!isg[nw[j] - 'a']) {
            flag = 1;
            break;
          }
        } else if (nw[j] != s[i]) {
          flag = 1;
          break;
        }
      }
      if (flag) {
        puts("NO");
      } else {
        puts("YES");
      }
    }
  }
  return 0;
}
