Cod sursa(job #710325)
#include<iostream>
#include<fstream>
using namespace std;
int sol[1005][30],n,m,pas[30][30];
char a,b;
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=26;i++)
for(int j=1;j<=26;j++)
pas[i][j]=1;
cin.get();
for(int i=1;i<=m;i++)
{
cin>>a>>b;
pas[a-96][b-96]=0;
pas[b-96][a-96]=0;
}
for(int i=1;i<=26;i++)
sol[1][i]=1;
for(int linie=2;linie<=n;linie++)
{
for(int j=1;j<=26;j++)
{
//suma de deasupra
for(int l=1;l<=26;l++)
{
sol[linie][j]+=(sol[linie-1][j]*pas[l][j])%104659;
sol[linie][j]=(sol[linie][j])%104659;
}
}
}
int suma=0;
for(int i=1;i<=26;i++)
{
suma+=(sol[n][i])%104659;
suma=(suma)%104659;
}
printf("%d",suma);
return 0;
}