#include<bits/stdc++.h>
using namespace std;
int c,n,maxx,ans;
int a[200007];
bool b[300007],vis[20];
void dfs(int x,int p){
if(p>c/2+1)return;
if(b[x]){
ans=max(ans,c-p);
return;
}
for(int i=0;i<c;i++){
if(!vis[i])vis[i]=1,dfs((((x>>i)^1)<<i)+x%(1<<i),p+1),vis[i]=0;
}
}
void dfs_(int x,int p){
if(p>c/2+1)return;
if(b[x]){
ans=max(ans,p);
}
for(int i=0;i<c;i++){
if(!vis[i])vis[i]=1,dfs((((x>>i)^1)<<i)+x%(1<<i),p+1),vis[i]=0;
}
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>c>>n;
maxx=(1<<c)-1;
for(int i=1;i<=n;i++){
string s;
cin>>s;
for(int j=0;j<c;j++)a[i]=(a[i]<<1)+(s[j]=='G');
b[a[i]]=1;
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
ans=0;
dfs(maxx-a[i],0);
dfs_(a[i],0);
cout<<ans<<'\n';
}
return 0;
}