#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef __int128_t lll;
const ll Mod=99999999999973;
char mod[100010];
int cnt=1;
char l[12];
int tp[12];
ll p[12];
char str[100010];
int dp[12][100010];
int n,len;
ll hs[100010];
ll cf[100010];
ll ret(int l,int r){
if(l==0) return hs[r];
else return (hs[r]-hs[l-1]*(lll)cf[r-l+1]%Mod+Mod)%Mod;
}
void work(){
scanf("%s",str+1);
int slen=strlen(str+1);
for(int i=1;i<=slen;i++){
hs[i]=(hs[i-1]*31+str[i]-'a')%Mod;
}
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=1;i<cnt;i++){
for(int j=l[i];j<=slen;j++){
if(dp[i-1][j-l[i]]==1&&ret(j-l[i]+1,j)==p[i])
if(tp[i]==2) dp[i][j+1]|=dp[i-1][j-l[i]];
else dp[i][j]|=dp[i-1][j-l[i]];
}
if(tp[i]==1){
bool f=0;
for(int j=0;j<=slen;j++){
dp[i][j]|=f;
f|=dp[i][j];
}
}
}
bool ok=0;
for(int j=0;j<=slen;j++){
if(dp[cnt-1][j]&&ret(j+1,slen)==p[cnt]) ok=1;
}
if(ok) printf("YES\n"); else printf("NO\n");
}
int main(){
scanf("%s",mod);
cf[0]=1;
for(int i=1;i<=100005;i++) cf[i]=cf[i-1]*31%Mod;
len=strlen(mod);
for(int i=0;i<len;i++){
if(mod[i]=='*'||mod[i]=='?') tp[cnt++]=mod[i]=='*'?1:2;
else{
l[cnt]++;
p[cnt]=(p[cnt]*31+mod[i]-'a')%Mod;
}
}
scanf("%d",&n);
while(n--) work();
}