#include <fstream>
using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
long n,m,i,x,y,k,A[27]={0},B[100]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
bool c[27][27]={0};
char a,b;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>a>>b;
c[a-'a'][b-'a']=c[b-'a'][a-'a']=1;
}
int s=0;
for(x=0;x<n-1;x++)
{for(y=1;y<=26;y++)
for(k=1;k<=26;k++)
{
if(!c[y-1][k-1])
A[y]=(A[y]+B[k])%104659;
}
for(k=1;k<=26;k++)
{
B[k]=A[k];
A[k]=0;
}
}
for(x=1;x<=26;x++)
s=(s+B[x])%104659;
if(n==1) g<<26;
else g<<s;
return 0;
}