n = int(input()) good_strings = [] for _ in range(n): s = input().strip() is_good = True for i in range(1, len(s)): if s[i] < s[i-1]: is_good = False break if is_good and len(s) > 0: # Ensure length is at least 1 as per input constraints first = s[0] last = s[-1] length = len(s) good_strings.append((first, last, length)) dp = [0] * 26 for first, last, length in good_strings: f = ord(first) - ord('a') l = ord(last) - ord('a') max_prev = 0 for c in range(f + 1): if dp[c] > max_prev: max_prev = dp[c] new_val = max_prev + length if new_val > dp[l]: dp[l] = new_val print(max(dp))