#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i = a; i < b;++i)
#define pb push_back
#define int long long
using namespace std;
const int M = 998244353;
int32_t main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
int n;
cin>>n;
set<string> S[11];
FOR(i,0,n){
string W;
cin>>W;
S[W.size()].insert(W);
reverse(W.begin(),W.end());
S[W.size()].insert(W);
}
int suma = 0;
FOR(i,3,11){
int dp[37][37][37];
int zlicz[37][37];
FOR(j,0,36){
FOR(k,0,36){
FOR(l,0,36){
dp[j][k][l] = zlicz[j][k] = 0;
}
}
}
if(S[i].size() == 0){continue;}
for(auto y : S[i]){
int x1 = y[0] - 'a';
int y1 = y[i - 1] - 'a';
if(x1 < 0){x1+=48;}
if(y1 < 0){y1+=48;}
zlicz[x1][y1]++;
}
FOR(j,0,33){
FOR(k,0,33){
FOR(l,0,33){
FOR(m,0,33){
dp[j][k][l] = (dp[j][k][l] + zlicz[j][m] * zlicz[k][m] * zlicz[l][m]) % M;
}
}
}
}
FOR(j,0,33){
FOR(k,0,33){
FOR(l,0,33){
FOR(m,0,33){
suma = (suma + (((((dp[k][l][m]) * dp[j][l][m]) % M) * dp[j][k][m]) % M) * dp[j][k][l]) % M;
}
}
}
}
}
cout<<suma;
}
# | 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... |