#include <bits/stdc++.h>
using namespace std;
const int C = 62, mod = 998244353;
int w[C][C];
int cnt[C][C][C], ans=0;
vector<string> v[11];
map<char,int> id;
void add(int &x,int y)
{
x+=y;
if (x>=mod) x-=mod;
}
void solve(int sz)
{
for (int i=0;i<C;i++)
for (int j=0;j<C;j++)
{
w[i][j]=0;
for (int k=0;k<C;k++) cnt[i][j][k]=0;
}
set<string> se;
for (auto i:v[sz])
{
se.insert(i);
string s=i;reverse(s.begin(),s.end());
se.insert(s);
}
for (auto i:se)
w[id[i[0]]][id[i[sz-1]]]++;
for (int i=0;i<C;i++)
for (int j=0;j<C;j++)
for (int k=0;k<C;k++)
for (int l=0;l<C;l++)
add(cnt[i][j][k],1ll*w[i][l]*w[j][l]*w[k][l]%mod);
for (int i=0;i<C;i++)
for (int j=0;j<C;j++)
for (int k=0;k<C;k++)
for (int l=0;l<C;l++)
add(ans,1ll*cnt[i][j][k]*cnt[i][k][l]%mod*cnt[i][j][l]%mod*cnt[j][k][l]%mod);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL), cout.tie(NULL);
int x=0;
for (char c='a';c<='z';c++) id[c]=x++;
for (char c='A';c<='Z';c++) id[c]=x++;
for (char c='0';c<='9';c++) id[c]=x++;
int n;
cin>>n;
for (int i=0;i<n;i++)
{
string s;
cin>>s;
v[s.size()].push_back(s);
}
for (int i=3;i<=10;i++)
if (v[i].size())
solve(i);
cout<<ans<<endl;
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... |