#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 20;
char des[maxn], sre[maxn];
int isgood[300];
int len, isf;
bool ok() {
  int le = strlen(sre);
  if (isf == 0) {
    if (le != len) {
      return 0;
    }
    for (int i = 0; i < len; i++) {
      if (sre[i] != des[i]) {
        if (des[i] == '?' && isgood[sre[i]]) {
        } else {
          return 0;
        }
      }
    }
    return 1;
  }
  if (le < len - 1) {
    return 0;
  }
  int ins = le - (len - 1), j = 0;
  for (int i = 0; i < len; i++) {
    if (des[i] == '?') {
      if (isgood[sre[j]] == 0) {
        return 0;
      }
    } else if (des[i] == '*') {
      for (int k = 0; k < ins; k++) {
        if (isgood[sre[j++]] == 1) {
          return 0;
        }
      }
    } else if (des[i] != '?' && des[i] != '*' && des[i] != sre[j]) {
      return 0;
    }
    if (des[i] != '*') j++;
  }
  return 1;
}
int main() {
  scanf("%s", des);
  len = strlen(des);
  for (int i = 0; i < len; i++) {
    isgood[des[i]] = 1;
  }
  scanf("%s", des);
  len = strlen(des);
  for (int i = 0; i < len; i++) {
    if (des[i] == '*') {
      isf = 1;
    }
  }
  int n;
  scanf("%d", &n);
  while (n--) {
    scanf("%s", sre);
    if (ok()) {
      printf("YES\n");
    } else {
      printf("NO\n");
    }
  }
  return 0;
}
