Pagini recente » Cod sursa (job #2062393) | Cod sursa (job #3275426) | Cod sursa (job #1251595) | Cod sursa (job #2341254) | Cod sursa (job #2927734)
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <math.h>
#include <vector>
#include <iomanip>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <stack>
#include <queue>
#include <bitset>
#include <string>
//#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
#define fast ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define mod %104659
int dp[1003][30];
bitset <30> a[30];
int n, m;
void read()
{
char x, y;
fin >> n >> m;
for (int i = 1; i <= m; ++i)
{
fin >> x >> y;
a[x-'a'+1][y-'a'+1] = a[y-'a'+1][x-'a'+1] =1;
}
}
void fn()
{
for (int i = 1; i <= 26; ++i)
dp[1][i] = 1;
for (int lg = 2; lg <= n; ++lg) //pt fiecare lungime de cuvant
for (int letter = 1; letter <= 26; ++letter) //sa vad toate posibilitatile de cuv care se termina cu o anumita litera
for (int letter2 = 1; letter2 <= 26; ++letter2) //aici vad cu ce litere e compatibila
if (!a[letter][letter2])
dp[lg][letter]+=(dp[lg-1][letter2] mod);
long long answer = 0;
for (int column = 1; column <= 26; ++column)
answer += dp[n][column];
fout << answer mod;
}
int main()
{
fast;
read();
fn();
}