#include #include #include using namespace atcoder; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000001 int main(){ int N; cin>>N; vector S; rep(i,N){ string s; cin>>s; string t = s; sort(t.begin(),t.end()); if(s!=t)continue; S.push_back(s); } vector>> X(26); int ans = 0; vector cost(26,0); rep(i,S.size()){ if(S[i][0]==S[i].back())cost[S[i][0]-'a'] += S[i].size(); else{ X[S[i][0]-'a'].emplace_back(S[i].back()-'a',S[i].size()); } } vector dp(26,0); rep(i,26){ dp[i] += cost[i]; rep(j,X[i].size()){ int x = X[i][j].first,y = X[i][j].second; dp[x] = max(dp[x],dp[i]+y); } if(i!=25)dp[i+1] = max(dp[i+1],dp[i]); } ans += dp.back(); cout<