#include<bits/stdc++.h>
using namespace std;
const int N=1000010;//容量要开最大字符串数量乘单个字符串的最大长度
string s;
int arr[N][27];
int n,m,num;
bool flag[N];
void insert(string s)//插入字符串
{
int root=0;
for(int i=0;i<s.size();i++)
{
int j=s[i]-'a';
if(!arr[root][j])arr[root][j]=++num;
root=arr[root][j];
}
flag[root]=true;//判断以第root行结尾的字符串是否存在
}
bool strfind(string s)
{
int root=0;
for(int i=0;i<s.size();i++)
{
int j=s[i]-'a';
if(!arr[root][j])
{
return false;//遇到0说明不存在直接返回false
}
root=arr[root][j];
}
return true;//搜完了也没有返回false说明存在
//这里也可以返回flag[root]
}
int main()
{
while(cin>>n>>m)
{
if(n==0&&m==0)
break;
num=0;
for(int i=0;i<10*n;i++)//每个字符串最多有10个字符
//也就是最多占用10*n行arr
{
flag[i]=false;
for(int j=0;j<27;j++)
{
arr[i][j]=0;
}
}
for(int i=0;i<n;i++)
{
cin>>s;
insert(s);
}
for(int i=0;i<m;i++)
{
cin>>s;
if(strfind(s))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}