#include <bits/stdc++.h>
#define ll long long
#define inf (ll)(1e15)
#define mod (ll)998244353
#define dbg(x) cerr <<#x << ' ' << x <<endl;
using namespace std;
void printvec(vector<ll>& v)
{
for (auto &&i : v)
{
cout <<i<<' ';
}
cout << endl;
}
map<pair<char,char>,ll> mp;
ll anss(ll i, ll n, string cur)
{
if(i==8)
{
ll ans=1;
for (int j=0;j<7;j+=2)
{
ans*=mp[{cur[j],cur[j+1]}];
ans%=mod;
}
for (int j=0;j<1;j++)
{
ans*=mp[{cur[j],cur[j+2]}];
ans%=mod;
}
for (int j=4;j<6;j++)
{
ans*=mp[{cur[j],cur[j+2]}];
ans%=mod;
}
for (int j=0;j<4;j++)
{
ans*=mp[{cur[j],cur[j+4]}];
ans%=mod;
}
return ans;
}
ll sm=0;
for (char cr='a';cr<='f';cr++)
{
sm+=anss(i+1,n,cur+cr);
sm%=mod;
}
return sm;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
ll n;
cin>>n;
vector<string> s(n);
ll sz=0;
for (int i=0;i<n;i++)
{
cin>>s[i];
sz=max(sz,(ll)s[i].size());
}
// vector<string> s2;
for (int i=0;i<n;i++)
{
if(s[i].size()==sz)
{
mp[{s[i][0],s[i].back()}]++;
mp[{s[i].back(),s[i][0]}]++;
// s2.push_back(s[i]);
}
}
cout << anss(0,n,"") << 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... |