#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > V;
int in[50];
int main() {
  vector<string> S;
  V.resize(30);
  int n, ile;
  cin >> n;
  ile = n;
  while (ile--) {
    string a;
    cin >> a;
    S.push_back(a);
  }
  for (int i = 0; i < S.size(); i++) {
    for (int j = i + 1; j < S.size(); j++) {
      for (int k = 0; k < min(S[i].size(), S[j].size()); k++) {
        if (S[i][k] == S[j][k]) {
          if (k + 1 == S[j].size()) {
            cout << "Impossible";
            return 0;
          }
          continue;
        }
        V[S[i][k] - 'a'].push_back(S[j][k] - 'a');
        in[S[j][k] - 'a']++;
        break;
      }
    }
  }
  vector<int> kol;
  queue<int> Q;
  for (int i = 0; i < 26; i++)
    if (in[i] == 0) Q.push(i);
  while (!Q.empty()) {
    int v = Q.front();
    Q.pop();
    kol.push_back(v);
    for (auto sas : V[v]) {
      in[sas]--;
      if (in[sas] == 0) Q.push(sas);
    }
  }
  if (kol.size() < 26) {
    cout << "Impossible";
    return 0;
  }
  for (auto c : kol) cout << (char(c + 'a'));
}
