#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000000000")
using namespace std;
int n;
string st[1001];
int vis[1001];
vector<int> adj[1001];
int in[1001];
string ans = "";
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> st[i];
  for (int i = 0; i < n; i++)
    for (int z = i + 1; z < n; z++) {
      int j = 0;
      while (j < st[i].size() && j < st[z].size() && st[i][j] == st[z][j]) j++;
      if ((j >= st[i].size() || j >= st[z].size()) &&
          st[z].size() < st[i].size()) {
        printf("Impossible");
        return 0;
      }
      if ((j >= st[i].size() || j >= st[z].size())) continue;
      adj[st[i][j] - 'a'].push_back(st[z][j] - 'a');
      in[st[z][j] - 'a']++;
    }
  while (ans.size() < 26) {
    bool add = 0;
    for (int i = 0; i < 26; i++)
      if (in[i] == 0 && vis[i] == 0) {
        add = 1;
        vis[i] = 1;
        ans += char(i + 'a');
        for (int j = 0; j < adj[i].size(); j++) in[adj[i][j]]--;
      }
    if (add == 0) break;
  }
  if (ans.size() != 26) {
    printf("Impossible");
    return 0;
  }
  cout << ans << endl;
  return 0;
}
