Pagini recente » Cod sursa (job #2070363) | Cod sursa (job #1520047) | Cod sursa (job #1572186) | Cod sursa (job #1316383) | Cod sursa (job #3316621)
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include "stdio.h"
using namespace std;
#define ll long long
const int inf = 0x3f3f3f3f;
const int mod = 104659;
int main() {
#ifdef DEBUG
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif //DEBUG
#ifdef INFOARENA
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
#endif //INFOARENA
ll m, n;
cin >> n >> m;
bool forbid[26][26] = {};
for (int i = 0; i < m; i++) {
char x, y;
cin >> x >> y;
forbid[x-'a'][y-'a'] = true;
forbid[y-'a'][x-'a'] = true;
}
vector<int> cnt(26, 1);
for(int k=0;k<n-1;k++) {
vector<int> ncnt(26);
for(int i=0;i<26;i++) {
int s = 0;
for(int j=0;j<26;j++) {
if(forbid[j][i]) continue;
s = (s + cnt[j]) % mod;
}
ncnt[i] = s;
}
cnt = ncnt;
}
int s = 0;
for(int i=0;i<26;i++) {
s = (s + cnt[i]) % mod;
}
cout << s;
return 0;
}