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): remaining = [s for s in state if s] if not remaining: return '' first_chars = [s[0] for s in remaining] min_char = min(first_chars) candidates_indices = [i for i, s in enumerate(state) if s and s[0] == min_char] min_str = None for idx in candidates_indices: new_state = list(state) new_state[idx] = new_state[idx][1:] new_state_tuple = tuple(new_state) res = min_char + dfs(new_state_tuple) if min_str is None or res < min_str: min_str = res return min_str initial_state = tuple(strings) print(dfs(initial_state)) if __name__ == '__main__': main()