Pagini recente » Cod sursa (job #2625088) | Cod sursa (job #19465) | Cod sursa (job #1983703) | Cod sursa (job #526952) | Cod sursa (job #469583)
Cod sursa(job #469583)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define REP(i,n) for (int i=0;i<(n);i++)
#define MOD 104659
#define N 1010
int n,m,f[N][30],ans;
char a[2],b[2];
bool mp[30][30];
void open(){
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
}
void input(){
scanf("%d%d",&n,&m);
REP(i,m){
scanf("%s%s",a,b);
mp[a[0]-'a'][b[0]-'a']=1;
mp[b[0]-'a'][a[0]-'a']=1;
}
}
void add(int &a,int b){
a+=b;
if (a>=MOD) a%=MOD;
}
int dp(int x,int y){
if (x==n-1) return 1;
if (f[x][y]!=-1) return f[x][y];
int res=0;
REP(i,26){
if (mp[y][i]) continue;
add(res,dp(x+1,i));
}
return f[x][y]=res;
}
void solve(){
memset(f,-1,sizeof(f));
ans=0;
for (int i=0;i<26;i++){
add(ans,dp(0,i));
}
printf("%d\n",ans);
}
int main(){
open();
input();
solve();
//system("pause");
return 0;
}