#include <bits/stdc++.h>
using namespace std;
bool a[30][30];
bool used[30];
string s[105];
string ans = "";
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) cin >> s[i];
  bool poss = true;
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      int k = 0;
      int sz1 = s[i].size();
      int sz2 = s[j].size();
      while (k < sz1 && k < sz2) {
        if (s[i][k] == s[j][k])
          k++;
        else {
          a[s[i][k] - 'a'][s[j][k] - 'a'] = 1;
          break;
        }
      }
      if (sz1 == sz2) {
        if (k == sz1) {
          poss = false;
        }
      } else if (sz1 < sz2) {
      } else {
        if (k == sz2) {
          poss = false;
        }
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    for (int j = i + 1; j < 26; j++) {
      if (a[i][j] + a[j][i] == 2) poss = false;
    }
  }
  if (!poss) {
    printf("Impossible\n");
    return (0);
  }
  int ct = 26;
  while (ct) {
    int found = 0;
    for (int i = 0; i < 26; i++) {
      if (used[i]) continue;
      bool good = true;
      for (int j = 0; j < 26; j++) {
        if (i != j && !used[j] && a[j][i]) good = false;
      }
      if (good) {
        used[i] = true;
        ans = ans + char('a' + i);
        ct--;
        found++;
        break;
      }
    }
    if (!found) {
      poss = false;
      break;
    }
  }
  if (!poss) {
    printf("Impossible\n");
    return (0);
  } else {
    cout << ans << endl;
  }
  return 0;
}
