#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
const int ALPH = 26;
int N, vis[ALPH];
int T, ord[ALPH];
string S[MAXN];
vector<int> adj[ALPH];
void dfs(int v) {
  vis[v] = 1;
  for (int n : adj[v]) {
    if (vis[n] == 1) {
      cout << "Impossible\n";
      exit(0);
    } else if (!vis[n]) {
      dfs(n);
    }
  }
  vis[v] = 2;
  ord[T++] = v;
}
int main() {
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> S[i];
    if (i > 0) {
      for (int j = 0; j < MAXN; j++) {
        if (j == S[i].size()) {
          cout << "Impossible\n";
          return 0;
        }
        if (j == S[i - 1].size()) {
          break;
        }
        if (S[i][j] != S[i - 1][j]) {
          adj[S[i][j] - 'a'].push_back(S[i - 1][j] - 'a');
          break;
        }
      }
    }
  }
  for (int i = 0; i < ALPH; i++) {
    if (!vis[i]) {
      dfs(i);
    }
  }
  for (int i = 0; i < ALPH; i++) {
    cout << char(ord[i] + 'a');
  }
  cout << '\n';
}
