#include <bits/stdc++.h>
using namespace std;
int g[26][26];
int in[26];
int n;
string name[111];
int main(int argc, char *argv[]) {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> name[i];
  bool succ = true;
  for (int i = 0; i + 1 < n; i++) {
    int j = 0;
    while (j < min(name[i].size(), name[i + 1].size()) &&
           name[i][j] == name[i + 1][j])
      j++;
    if (j == name[i].size()) continue;
    if (j == name[i + 1].size()) {
      succ = false;
      break;
    }
    g[name[i][j] - 'a'][name[i + 1][j] - 'a'] = 1;
  }
  if (!succ)
    cout << "Impossible\n";
  else {
    for (int i = 0; i < 26; i++)
      for (int j = 0; j < 26; j++) in[i] += g[j][i];
    string r;
    vector<bool> used(26, false);
    for (int i = 0; i < 26; i++) {
      int j;
      for (j = 0; j < 26; j++)
        if (in[j] == 0 && used[j] == false) break;
      if (j == 26) {
        succ = false;
        break;
      }
      r.push_back(j + 'a');
      used[j] = true;
      for (int k = 0; k < 26; k++)
        if (g[j][k]) in[k]--;
    }
    if (succ) {
      cout << r << endl;
    } else
      cout << "Impossible\n";
  }
  return 0;
}
