#include <bits/stdc++.h>
using namespace std;
int arr[30][30];
char str[111];
int main() {
  int i, j, k, l, ans = 0;
  ;
  for (i = 0; i < 30; i++)
    for (j = 0; j < 30; j++) arr[i][j] = 0;
  int n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%s", str);
    l = strlen(str);
    if (str[0] - 'a' == str[l - 1] - 'a') {
      ans = max(ans, arr[str[l - 1] - 'a'][str[0] - 'a'] + l);
      if (arr[str[0] - 'a'][str[l - 1] - 'a'] == 0) {
        for (j = 0; j < 30; j++)
          if (arr[j][str[0] - 'a'] != 0)
            arr[j][str[l - 1] - 'a'] =
                max(arr[j][str[l - 1] - 'a'], arr[j][str[0] - 'a'] + l);
        arr[str[0] - 'a'][str[l - 1] - 'a'] =
            arr[str[0] - 'a'][str[l - 1] - 'a'] + l;
      } else {
        for (j = 0; j < 30; j++)
          if (arr[j][str[0] - 'a'] != 0)
            arr[j][str[l - 1] - 'a'] =
                max(arr[j][str[l - 1] - 'a'], arr[j][str[0] - 'a'] + l);
      }
    } else {
      if (arr[str[l - 1] - 'a'][str[0] - 'a'] != 0) {
        ans = max(ans, arr[str[l - 1] - 'a'][str[0] - 'a'] + l);
      }
      for (j = 0; j < 30; j++)
        if (arr[j][str[0] - 'a'] != 0)
          arr[j][str[l - 1] - 'a'] =
              max(arr[j][str[l - 1] - 'a'], arr[j][str[0] - 'a'] + l);
    }
    arr[str[0] - 'a'][str[l - 1] - 'a'] =
        max(arr[str[0] - 'a'][str[l - 1] - 'a'], l);
  }
  printf("%d", ans);
  return 0;
}
