import sys from functools import lru_cache def main(): sys.setrecursionlimit(1 << 25) n = int(sys.stdin.readline()) strings = [sys.stdin.readline().strip() for _ in range(n)] @lru_cache(maxsize=None) def dfs(state): candidates = [] min_char = '{' # A character higher than 'z' to ensure initial comparison for i in range(n): s = state[i] if s: c = s[0] if c < min_char: min_char = c candidates = [i] elif c == min_char: candidates.append(i) if not candidates: return '' min_result = None for i in candidates: new_state = list(state) new_state[i] = new_state[i][1:] new_state_tuple = tuple(new_state) res = min_char + dfs(new_state_tuple) if (min_result is None) or (res < min_result): min_result = res return min_result initial_state = tuple(strings) print(dfs(initial_state)) if __name__ == '__main__': main()