#include<bits/stdc++.h>
using namespace std;
#define re register
#define rint re int
#define ll long long
#define rll re ll
#define db double
#define rdb re db
#define rch re char
#define un unsigned
#define ull un ll
#define rull re ull
template <typename T> T read()
{
rch ch=getchar();re T ans=0;rint f=1;
for(;!isdigit(ch);ch=getchar())
ch=='-'?f=-1:0;
for(;ch>='0';ch=getchar())
ans=ans*10+(ch&15);
return ans*f;
}
const int maxn=3e2+10;
const int N=3e2;
const db minlf=1e-8;
const int tran=233;
db pw2[maxn];
char s[maxn];
ull hspow[maxn];
ull hs[maxn][maxn];
db a[maxn][maxn];
int main()
{
rint n=read<int>(),m=read<int>();
pw2[0]=1.0,hspow[0]=1;
for(rint i=1;i<=N;i++) pw2[i]=pw2[i-1]*2.0,hspow[i]=hspow[i-1]*tran;
for(rint i=1;i<=n;i++)
{
scanf("%s",s+1);
for(rint j=1;j<=m;j++) hs[i][j]=hs[i][j-1]*tran+s[j];
}
for(rint i=1;i<=n;i++)
{
a[i][n+1]=-1.0;
for(rint j=1;j<=n;j++)
for(rint k=1;k<=m;k++)
if(hs[j][m]-hs[j][m-k]*hspow[k]==hs[i][k])
a[i][j]+=pw2[k];
}
for(rint i=1;i<=n;i++) a[n+1][i]=1.0;a[n+1][n+2]=1.0;
for(rint i=1;i<=n+1;i++)
{
rint pos=i;
for(rint j=i+1;j<=n+1;j++) //这里写 j=i 就过了,j=i+1 就WA60
if(abs(a[j][i])>minlf)
{
pos=j;
break;
}
swap(a[i],a[pos]);
for(rint j=i+1;j<=n+2;j++)
a[i][j]/=a[i][i];
a[i][i]=1.0;
for(rint j=1;j<=n+1;j++)
{
if(i==j) continue;
for(rint k=i+1;k<=n+2;k++)
a[j][k]-=a[j][i]*a[i][k];
a[j][i]=0.0;
}
}
for(rint i=1;i<=n;i++) printf("%.10lf\n",a[i][n+2]);
return 0;
}