#include <bits/stdc++.h>
using namespace std;
vector<bool> bb(26, false);
vector<bool> ur(26, false);
vector<bool> id(26, false);
vector<int> v;
string ki = "";
bool im = false;
vector<vector<int> > s(26, v);
void bejar(int x) {
  id[x] = bb[x] = true;
  for (int i = 0; i < s[x].size(); i++) {
    if (id[s[x][i]]) im = true;
    if (!bb[s[x][i]]) bejar(s[x][i]);
  }
  ki += (char)(97 + x);
  id[x] = false;
}
int main() {
  int n;
  cin >> n;
  string t[n];
  for (int i = 0; i < n; i++) cin >> t[i];
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      for (int o = 0; o < t[i].length(); o++) {
        if (o >= t[j].length()) {
          cout << "Impossible\n";
          return 0;
        }
        if (t[i][o] < t[j][o]) {
          s[(int)t[j][o] - 97].push_back((int)t[i][o] - 97);
          break;
        } else if (t[i][o] > t[j][o]) {
          s[(int)t[j][o] - 97].push_back((int)t[i][o] - 97);
          break;
        }
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    if (!bb[i]) {
      bejar(i);
      id = ur;
    }
  }
  if (im)
    cout << "Impossible\n";
  else
    cout << ki << endl;
  return 0;
}
