#include "bits/stdc++.h" #define int long long using namespace std; using ll = long long; using P = pair; const ll INF = (1LL << 61); ll mod = 1000000007; int dp[27]; signed main() { ios::sync_with_stdio(false); cin.tie(0); int N; cin >> N; vectorS(N); for (int i = 0; i < N; i++)cin >> S[i]; sort(S.begin(), S.end()); vectorc(N); for (int i = 0; i < N; i++) { bool ok = true; for (int j = 0; j < (int)S[i].size() - 1; j++) { if (S[i][j] > S[i][j + 1])ok = false; } c[i] = ok; } vector>cost(26, vector(26, -INF)); for (int i = 0; i < N; i++) { if (!c[i])continue; char f = S[i][0], e = S[i].back(); if (f == e) { cost[f - 'a'][e - 'a'] = max(cost[f - 'a'][e - 'a'], 0LL); cost[f - 'a'][e - 'a'] += (int)S[i].size(); } else cost[f - 'a'][e - 'a'] = max(cost[f - 'a'][e - 'a'], (int)S[i].size()); } for (int i = 0; i < 26; i++) { for (int j = 0; j < 26; j++) { int ma = 0; for (int k = 0; k <= i; k++) { ma = max(ma, dp[k] + cost[i][j]); } dp[j] = max(dp[j], ma); } } int ans = 0; for (int i = 0; i < 26; i++) { ans = max(ans, dp[i]); } cout << ans << endl; return 0; }