#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()
const int mod=998244353;
void mul(int &a,int b){
	a=1ll*a*b%mod;
}
void add(int &a,int b){
	a+=b;
	if(a>=mod) a-=mod;
}
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	const int lim=16;
	int pos[256];
	for(int i=0;i<26;i++){
		pos['a'+i]=i;
	}
	for(int i=0;i<26;i++){
		pos['A'+i]=i+26;
	}
	for(int i=0;i<10;i++){
		pos['0'+i]=i+52;
	}
	int n;
	cin>>n;
	string s[n+5];
	auto cnt=vector(11,vector(lim,vector(lim,0)));
	for(int i=1;i<=n;i++){
		cin>>s[i];
		string t=s[i];
		reverse(all(t));
		if(t<s[i]) s[i]=t;
	}
	sort(s+1,s+n+1);
	for(int i=1;i<=n;i++){
		if(i>1&&s[i]==s[i-1]) continue;
		int x=pos[s[i][0]],y=pos[s[i].back()];
		cnt[s[i].size()][min(x,y)][max(x,y)]++;
		if(s[i][0]==s[i].back()){
			string t=s[i];
			reverse(all(t));
			if(s[i]!=t){
				cnt[s[i].size()][min(x,y)][max(x,y)]++;
			}
		}
	}
	int p=1;
	for(int a=3;a<=10;a++){
		for(int i=0;i<lim;i++){
			for(int j=i+1;j<lim;j++){
				cnt[a][j][i]=cnt[a][i][j];
			}
		}
	}
	for(int i=0;i<4;i++){
		p*=lim;
	}
	int ans=0;
	vector<int>adj[8];
	for(int i=0;i<4;i++){
		adj[i].pb(i+4);
		adj[i+4].pb(i);
		adj[i].pb((i+1)%4);
		adj[(i+1)%4].pb(i);
		adj[i+4].pb((i+1)%4+4);
		adj[(i+1)%4+4].pb(i+4);
	}
	vector<int>v[2];
	v[0]={0,2,5,7};
	v[1]={1,3,4,6};
	for(int a=3;a<=10;a++){
		for(int i=0;i<p;i++){
			int cur=1,c[8];
			int x=i;
			for(int j:v[0]){
				c[j]=x%lim;
				x/=lim;
			}
			int all=1;
			for(int x:v[1]){
				int sum=0;
				for(int d=0;d<lim;d++){
					int tot=1;
					for(int y:adj[x]){
						mul(tot,cnt[a][c[y]][d]);
					}
					add(sum,tot);
				}
				mul(all,sum);
			}
			add(ans,all);
		}
	}
	cout<<ans;
}
| # | 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... |