#include <bits/stdc++.h>
using namespace std;
int n;
string s[200];
vector<int> r[20000];
int visit[30];
vector<char> ans;
bool ok = 1;
void dfs(int a) {
  if (visit[a]) return;
  visit[a] = 1;
  for (int i = 0; i < r[a].size(); i++) {
    if (visit[r[a][i]] == 0) dfs(r[a][i]);
    if (visit[r[a][i]] == 1) {
      ok = 0;
      return;
    }
  }
  ans.push_back(a + 'a');
  visit[a] = 2;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> s[i];
  for (int i = 0; i <= n - 2; i++) {
    int l1 = s[i].length(), l2 = s[i + 1].length(), j;
    for (j = 0; j < min(l1, l2); j++)
      if (s[i][j] != s[i + 1][j]) {
        r[s[i][j] - 'a'].push_back(s[i + 1][j] - 'a');
        break;
      }
    if (l1 > l2 && j == l2) ok = 0;
  }
  for (int i = 0; i < 26; i++) dfs(i);
  if (ok) {
    for (int i = ans.size() - 1; i >= 0; i--) cout << ans[i];
  } else
    cout << "Impossible";
  return 0;
}
