#include <bits/stdc++.h>
using namespace std;
const int N = 111;
int n, ans[26];
bool les[26][26];
string s[N];
void input() {
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> s[i];
}
void init() {
  for (int i = 1; i < n; ++i) {
    bool ok = false;
    for (int j = 0; j < min(s[i].size(), s[i - 1].size()); ++j)
      if (s[i][j] != s[i - 1][j]) {
        ok = true;
        if (les[s[i][j] - 'a'][s[i - 1][j] - 'a']) {
          cout << "Impossible";
          exit(0);
        }
        les[s[i - 1][j] - 'a'][s[i][j] - 'a'] = true;
        break;
      }
    if (!ok && s[i].size() < s[i - 1].size()) {
      cout << "Impossible";
      exit(0);
    }
  }
  for (int i = 0; i < 26; ++i)
    for (int j = 0; j < 26; ++j) {
      if (les[i][j])
        for (int t = 0; t < 26; ++t)
          if (les[j][t]) les[i][t] = true;
      if (les[j][i])
        for (int t = 0; t < 26; ++t)
          if (les[i][t]) les[j][t] = true;
    }
  for (int i = 0; i < 26; ++i)
    for (int j = 0; j < 26; ++j)
      if (les[i][j] && les[j][i]) {
        cout << "Impossible";
        exit(0);
      }
}
void solve() {
  for (int i = 0; i < 26; ++i) ans[i] = i;
  for (int i = 0; i < 26; ++i)
    for (int j = i + 1; j < 26; ++j)
      if (les[ans[j]][ans[i]]) swap(ans[i], ans[j]);
  for (int i = 0; i < 26; ++i) cout << char(ans[i] + 'a');
}
int main() {
  int nTest = 1;
  while (nTest--) {
    input();
    init();
    solve();
  }
  return 0;
}
