#!/usr/bin/env python3
n = int(input())
strings = [input() for i in range(n)]
graph = [[] for i in range(26)]
counts = [0 for i in range(26)]
possible = True
for i in range(n-1):
    a,b = strings[i:i+2]
    for c,d in zip(a,b):
        if c != d:
            c = ord(c)-ord('a')
            d = ord(d)-ord('a')
            graph[c].append(d)
            counts[d] += 1
            break
    else:
        if len(a)>len(b):
            possible = False
order = []
def dfs(v):
    if counts[v] == 0:
        counts[v] = -1
        order.append(v)
        for w in graph[v]:
            counts[w] -= 1
            dfs(w)
for i in range(26):
    dfs(i)
for i in range(26):
    if counts[i] > 0:
        possible = False

if possible:
    print(*[chr(i+ord('a')) for i in order],sep='')
else:
    print("impossible")
