Pagini recente » Cod sursa (job #2379253) | Cod sursa (job #2098138) | Cod sursa (job #1305761) | Cod sursa (job #2259892) | Cod sursa (job #2941232)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("nrcuv.in");
ofstream out ("nrcuv.out");
#define int long long
const int mod = 104659;
int dp[1001][26]; /// dp[n][k] - primele n, a[n] = k
bitset<26>ok[26];
signed main()
{
int n, m;
in >> n >> m;
for (int i=0; i<26; i++)
{
for (int j=0; j<26; j++)
ok[i][j] = true;
}
int cnt = 0;
while (m--)
{
char a, b;
in >> a >> b;
int x = a - 'a', y = b - 'a';
ok[x][y] = ok[y][x] = false;
}
for (int i=0; i<26; i++)
dp[1][i] = 1;
for (int i=2; i<=n; i++)
{
for (int j=0; j<26; j++)
{
for (int k=0; k<26; k++)
{
if (ok[j][k])
dp[i][k] += dp[i-1][j], dp[i][k] %= mod;
}
}
}
long long ans = 0;
for (int i=0; i<26; i++)
ans += dp[n][i], ans %= mod;
out << ans;
return 0;
}