#include <bits/stdc++.h>
#define ll int
#define sz(x) int(x.size())
#define forn(i, n) for (i = 0; i < n; i++)
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define fr first
#define se second
using namespace std;
const int MOD = 998244353;
const int ma = 58;
ll dis[8][ma][ma]; // tam, in, fin
ll tots[8][ma][ma][ma][ma];
ll memo[8][ma][ma][ma];
ll calc(ll tam, ll i, ll j)
{
ll cant = 0;
cant = dis[tam-3][i][j] % MOD;
return cant;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n, i, tam, j, k, l, cant, act = 0, ant, tot = 0, u, an, bn, cn, dn;
cin >> n;
string s, a;
map<string, bool> m;
vector<ll> pos(max('z', max('Z','9')) + 1, 0);
for (i = 'a'; i <= 'z'; i++)
pos[i] = act++;
for (i = 'A'; i <= 'Z'; i++)
pos[i] = act++;
for(i='0'; i<='9'; i++)
pos[i]=act++;
for (i = 0; i < n; i++)
{
cin >> s;
tam = sz(s);
a = s;
reverse(all(a));
if (m[s] == 0)
{
dis[tam-3][pos[s[0]]][pos[s.back()]]++;
m[s] = 1;
}
if (a != s && m[a] == 0)
{
dis[tam-3][pos[a[0]]][pos[a.back()]]++;
m[a] = 1;
}
}
for (tam = 3; tam <= 10; tam++)
{
for (i = 0; i < ma; i++)
{
for (j = 0; j < ma; j++)
{
for (k = 0; k < ma; k++)
{
for (u = 0; u < ma; u++)
{
act = 1;
act = (act * calc(tam, i, u)) % MOD;
act = (act * calc(tam, j, u)) % MOD;
act = (act * calc(tam, k, u)) % MOD;
memo[tam-3][i][j][k] = (act + memo[tam-3][i][j][k]) % MOD;
}
}
}
}
}
for (tam = 3; tam <= 10; tam++)
{
for (i = 0; i < ma; i++) // 1
{
for (j = 0; j < ma; j++) // 2
{
for (k = 0; k < ma; k++) // 3
{
for (l = 0; l < ma; l++) // 4
{
if (i == 5 && i == j && i == l && i == k)
{
cant = 1;
}
// 5
cant = 1;
an = memo[tam-3][i][l][k];
// 6
bn = memo[tam-3][i][j][k];
// 7
cn = memo[tam-3][j][l][k];
// 8
dn = memo[tam-3][i][j][l];
cant = (cant * an) % MOD;
cant = (cant * bn) % MOD;
cant = (cant * cn) % MOD;
cant = (cant * dn) % MOD;
tot = (tot + cant) % MOD;
}
}
}
}
}
cout << tot;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |