#include<bits/stdc++.h>
using namespace std;
const int N=10000005;
int n,m,tot=1;
char st[N],r[100005][105];
int ch[N][4],nxt[N],bo[N],que[N];
int trans(char s){
if(s=='E') return 0;
if(s=='W') return 1;
if(s=='N') return 2;
if(s=='S') return 3;
}
void build(char* s){
int u=1;
int len=strlen(s);
for(int i=0;i<len;i++){
int c=trans(s[i]);
if(!ch[u][c]) ch[u][c]=++tot;
u=ch[u][c];
}
}
void bfs(){
for(int i=0;i<=3;i++)
ch[0][i]=1;
que[1]=1;nxt[1]=0;
for(int i=1,j=1;i<=j;i++){
int u=que[i];
for(int i=0;i<=3;i++){
if(!ch[u][i]) ch[u][i]=ch[nxt[u]][i];
else{
que[++j]=ch[u][i];
nxt[ch[u][i]]=ch[nxt[u]][i];
}
}
}
}
int find(){
int u=1,k,c;
int len=strlen(st);
for(int i=0;i<len;i++){
c=trans(st[i]);
k=ch[u][c];
while(k>1&&!bo[k]){
bo[k]=1;
k=nxt[k];
}
u=ch[u][c];
}
}
void solve(int i){
int len=strlen(r[i]);
int u=1,c;
for(int j=0;j<len;j++){
c=trans(r[i][j]);
u=ch[u][c];
if(!bo[u]){
printf("%d\n",j);
return;
}
}
cout<<len<<endl;
return;
}
int main(){
cin>>n>>m;
scanf("%s",st);
for(int i=1;i<=m;i++){
scanf("%s",r[i]);
build(r[i]);
}
bfs();
find();
for(int i=1;i<=m;i++) solve(i);
return 0;
}