fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. string x,y;
  6. cin>>x>>y;
  7. int l,m,q,h[27]={0};
  8. l=x.length();
  9. m=y.length();
  10. for(int i=0;i<l;i++)
  11. h[x[i]-'a']=1;
  12. cin>>q;
  13. while(q--)
  14. {
  15. string z,tp;
  16. cin>>z;
  17. tp=y;
  18. int n=z.length(),f=1;
  19. if(m==n || m==n+1)
  20. {
  21. if(m==n+1)
  22. {
  23. if(tp.find('*')!=string::npos)
  24. tp.erase(tp.find('*'));
  25. }
  26. int lx=tp.length();
  27. //cout<<tp<<" "<<lx<<endl;
  28. for(int i=0;i<lx;i++)
  29. {
  30. if(!(tp[i]=='?' || tp[i]=='*'))
  31. {
  32. if(tp[i]!=z[i]) f=0;
  33. }
  34. else
  35. {
  36. if(tp[i]=='?' && !h[z[i]-'a']) f=0;
  37. if(tp[i]=='*' && h[z[i]-'a']) f=0;
  38. }
  39. }
  40. if(f)
  41. cout<<"YES"<<endl;
  42. else
  43. cout<<"NO"<<endl;
  44. }
  45. else
  46. cout<<"NO"<<endl;
  47. }
  48. return 0;
  49. }
Success #stdin #stdout 0s 15232KB
stdin
ab
a?a
2
aaa
aab
stdout
YES
NO