Cod sursa(job #194471)
#include<stdio.h>
#define NMAX 1010
#define MMAX 36
#define eps 104659
long b,y[MMAX][MMAX],i,j,n,m,k,l,a,x[NMAX][MMAX];
char c,s[MMAX];
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%ld%ld%c",&n,&m,&c);
for (i=1;i<=m;i++)
{
gets(s);
a=s[0]-96;
b=s[2]-96;
y[a][b]=1;
y[b][a]=1;
}
for (i=1;i<=26;i++)
x[1][i]=1;
for (i=2;i<=n;i++)
{
for (j=1;j<=26;j++)
{
k=0;
for (l=1;l<=26;l++)
if (y[j][l]==0)
k=(k+x[i-1][l])%eps;
x[i][j]=k%eps;
}
}
k=0;
for (i=1;i<=26;i++)
k=(k+x[n][i])%eps;
printf("%ld\n",k);
return 0;
}