Cod sursa(job #759399)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int N=1005;
const int M=2005;
int n,m,a[N][27],l[27][27];
char x,y;
void rez()
{
for(int i=1;i<=26;i++)
a[1][i]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=26;j++)
for(int k=1;k<=26;k++)
if(!l[k][j])
{
a[i][j]+=a[i-1][k];
a[i][j]%=104659;
}
}
int main()
{
int i,j,s=0;
in>>n>>m>>ws;
for(i=1;i<=m;i++)
{
in>>x>>ws>>y>>ws;
l[x-'a'+1][y-'a'+1]=1;
l[y-'a'+1][x-'a'+1]=1;
}
rez();
for(i=1;i<=26;i++)
s+=a[n][i];
out<<s%104659;
return 0;
}