#include <bits/stdc++.h>
using namespace std;
const int mod=998244353;
int cnt[11][26][26];
int main(){
int n;cin>>n;
for(int i=0;i<n;i++){
string s;
cin>>s;
int a=s.front()-'a', b=s.back()-'a';
cnt[s.size()][a][b]++;
string s_r=s;
reverse(s_r.begin(), s_r.end());
if(s!=s_r)
cnt[s.size()][b][a]++;
}
long long ans=0;
for(int len=3;len<=10;len++){ // different lenghts
for(int a=0;a<6;a++)
for(int b=0;b<6;b++)
for(int c=0;c<6;c++)
for(int d=0;d<6;d++)
for(int e=0;e<6;e++)
for(int f=0;f<6;f++)
for(int g=0;g<6;g++)
for(int h=0;h<6;h++){
vector<long long> v={
cnt[len][a][b],
cnt[len][a][c],
cnt[len][c][d],
cnt[len][b][d],
cnt[len][a][e],
cnt[len][b][f],
cnt[len][c][g],
cnt[len][d][h],
cnt[len][e][f],
cnt[len][e][g],
cnt[len][f][h],
cnt[len][g][h]
};
long long cur=1;
for(int i=0;i<(int)v.size();i++){
cur=(cur*v[i])%mod;
}
ans+=cur;
ans%=mod;
}
}
cout<<ans<<endl;
}
# | 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... |