#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e6+5,M=205;
int n,m;
char s[N],ss[15];
struct node{
int ch[26],fail,fa,len;
}t[N];
int sz;
void ins(char s[]){
int u=0,n=strlen(s+1);
for(int i=1;i<=n;i++){
int c=s[i]-‘a‘;
if(!t[u].ch[c]) t[u].ch[c]=++sz;
u=t[u].ch[c];
}
t[u].len=n;
}
int q[N],head,tail;
void getAC(){
head=tail=1;
for(int i=0;i<26;i++)
if(t[0].ch[i]) q[tail++]=t[0].ch[i];
while(head!=tail){
int u=q[head++];
for(int i=0;i<26;i++){
int &v=t[u].ch[i];
if(!v) {v=t[t[u].fail].ch[i];continue;}
t[v].fail=t[t[u].fail].ch[i];
q[tail++]=v;
}
}
}
int ans,f[N];
void AC(char s[]){
ans=0;memset(f,0,sizeof(f));
f[0]=1;
int now=0,n=strlen(s+1);
for(int i=1;i<=n;i++){
int c=s[i]-‘a‘;
now=t[now].ch[c];//printf("hi %d %d %d\n",i,c,now);
for(int _=now;_;_=t[_].fail) if(t[_].len){
f[i]|=f[i-t[_].len];
if(f[i]) {ans=i;break;}
}
}
}
int main(){
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%s",ss+1),ins(ss);
getAC();
for(int i=1;i<=m;i++){
scanf("%s",s+1);
AC(s);
printf("%d\n",ans);
}
}