#include <bits/stdc++.h>
using namespace std;
vector<int> e[30];
int vis[30];
vector<int> ord;
bool dfs(int v) {
  if (vis[v] == 2) return true;
  if (vis[v] == 1) return false;
  vis[v] = 1;
  for (int u : e[v]) {
    if (!dfs(u)) return false;
  }
  vis[v] = 2;
  ord.push_back(v);
  return true;
}
int main() {
  int n;
  cin >> n;
  vector<string> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  bool ok = 1;
  for (int i = 0; i < n - 1; i++) {
    int j = 0;
    while (j < a[i].size() && j < a[i + 1].size() && a[i + 1][j] == a[i][j])
      ++j;
    if (j == a[i + 1].size() && j < a[i].size())
      ok = 0;
    else if (j < a[i].size() && j < a[i + 1].size()) {
      e[a[i][j] - 'a'].push_back(a[i + 1][j] - 'a');
    }
  }
  for (int i = 0; i < 26; i++) ok &= dfs(i);
  if (!ok)
    cout << "Impossible\n";
  else {
    reverse((ord).begin(), (ord).end());
    for (int i = 0; i < 26; i++) cout << char(ord[i] + 'a');
    cout << endl;
  }
  return 0;
}
