#include <bits/stdc++.h>
using namespace std;
int wait[26];
bool before[26][26];
int main() {
  int n;
  cin >> n;
  vector<string> arr(n);
  for (int i = 0; i < n; ++i) cin >> arr[i];
  for (int i = 0; i < n; ++i) {
    for (int k = i + 1; k < n; ++k) {
      bool found = false;
      for (int j = 0; j < min(arr[i].size(), arr[k].size()); ++j) {
        if (arr[i][j] != arr[k][j]) {
          found = true;
          if (!before[arr[i][j] - 'a'][arr[k][j] - 'a']) {
            before[arr[i][j] - 'a'][arr[k][j] - 'a'] = true;
            wait[arr[k][j] - 'a']++;
          }
          break;
        }
      }
      if (!found && arr[i].size() > arr[k].size()) {
        cout << "Impossible\n";
        return 0;
      }
    }
  }
  string ans;
  vector<int> topo;
  for (int i = 0; i < 26; ++i)
    if (wait[i] == 0) topo.push_back(i);
  for (int i = 0; i < topo.size(); ++i) {
    ans.push_back(topo[i] + 'a');
    for (int j = 0; j < 26; ++j) {
      if (before[topo[i]][j]) {
        if (--wait[j] == 0) {
          topo.push_back(j);
        }
      }
    }
  }
  if (ans.size() < 26)
    cout << "Impossible\n";
  else
    cout << ans << '\n';
}
