n = int(input()) valid = [] for _ in range(n): s = input().strip() if not s: continue is_good = True prev = s[0] for c in s[1:]: if c < prev: is_good = False break prev = c if is_good: f_char = s[0] l_char = s[-1] length = len(s) valid.append((f_char, l_char, length)) dp = [0] * 26 prefix_max = [0] * 26 for f_char, l_char, length in valid: f = ord(f_char) - ord('a') l = ord(l_char) - ord('a') current_max_prev = prefix_max[f] candidate = current_max_prev + length if candidate > dp[l]: dp[l] = candidate # Update prefix_max prefix_max[0] = dp[0] for i in range(1, 26): prefix_max[i] = max(prefix_max[i-1], dp[i]) print(max(dp))