def is_good(s): for i in range(1, len(s)): if s[i] < s[i-1]: return False return True def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 strings = [] for _ in range(N): s = input[ptr] ptr += 1 if is_good(s): start = s[0] end = s[-1] length = len(s) strings.append((start, end, length)) # Sort by end, then by start strings.sort(key=lambda x: (x[1], x[0])) dp = [0] * 26 for (start, end, length) in strings: s_char = ord(start) - ord('a') e_char = ord(end) - ord('a') max_prev = 0 for c in range(s_char + 1): if dp[c] > max_prev: max_prev = dp[c] new_val = max_prev + length if new_val > dp[e_char]: dp[e_char] = new_val print(max(dp)) if __name__ == "__main__": main()