#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long INF = 0x3f3f3f3f;
const int MAXN = 1e5 + 24;
long long n, m;
char s[30];
char a[MAXN], b[MAXN];
int num[30];
int main() {
  int T, cs = 0;
  while (scanf("%s%s", &s, &a) != EOF) {
    int len = strlen(s);
    memset(num, 0, sizeof(num));
    for (int i = 0; i < len; i++) {
      num[s[i] - 'a'] = 1;
    }
    len = strlen(a);
    int d = len;
    for (int i = 0; i < len; i++) {
      if (a[i] == '*') {
        d = i;
        break;
      }
    }
    scanf("%d", &n);
    for (int j = 0; j < n; j++) {
      scanf("%s", &b);
      int lenb = strlen(b);
      int l = 0, r = lenb - 1;
      bool flag = true;
      for (int i = 0; i < d && flag; i++, l++) {
        if (a[i] == '?') {
          if (!num[b[l] - 'a']) flag = false;
        } else if (a[i] != b[l])
          flag = false;
        if (l > r) flag = false;
      }
      for (int i = len - 1; i > d && flag; i--, r--) {
        if (a[i] == '?') {
          if (!num[b[r] - 'a']) flag = false;
        } else if (a[i] != b[r])
          flag = false;
        if (l > r) flag = false;
      }
      if (l <= r && flag) {
        if (d < len) {
          for (int i = l; i <= r; i++) {
            if (num[b[i] - 'a']) flag = false;
          }
        } else
          flag = false;
      }
      if (flag)
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
