#include <iostream>
#include <string>

using namespace std;

bool adj[26][26];
int order[26];
bool visited[26];
int index;

void topsort(int i) {
  if (visited[i]) return;
  visited[i] = true;
  for (int j = 0; j < 26; j++) if (adj[i][j]) topsort(j);
  order[index++] = i;
}

int main() {
  while (true) {
    int n;
    cin >> n;
    if (n == -1) break;
    
    for (int i = 0; i < 26; i++) for (int j = 0; j < 26; j++) adj[i][j] = false;
    
    string a, b;
    cin >> a;
    for (int i = 1; i < n; i++) {
      cin >> b;
      for (int j = 0; j < a.length(); j++) {
        if (a[j] != b[j]) {
          adj[a[j] - 'a'][b[j] - 'a'] = true;
          break;
        }
      }
      a = b;
    }
    
    for (int i = 0; i < 26; i++) visited[i] = false;
    index = 0;
    
    for (int i = 0; i < 26; i++) topsort(i);
    
    for (int i = 25; i >= 0; i--) cout << (char) ('a' + order[i]);
    cout << endl;
  }
  return 0;
}

