#include <bits/stdc++.h>
using namespace std;
char s[105][105];
int sz[105];
vector<int> g[105];
int usd[30];
int ord[30], szo = 0, din[30];
bool dfs(int v) {
  usd[v] = 1;
  for (int i = 0; i < g[v].size(); ++i) {
    int u = g[v][i];
    if (usd[u] == 1)
      return false;
    else if (!usd[u])
      if (!dfs(u)) return false;
  }
  usd[v] = 2;
  ord[szo++] = v;
  return true;
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    scanf("%s", s[i]);
    sz[i] = strlen(s[i]);
  }
  for (int i = 1; i < n; ++i) {
    int j, mn = min(sz[i], sz[i - 1]);
    for (j = 0; j < mn; ++j)
      if (s[i][j] != s[i - 1][j]) {
        g[s[i - 1][j] - 'a'].push_back(s[i][j] - 'a');
        din[s[i][j] - 'a']++;
        break;
      }
    if (j == mn && sz[i] == mn) {
      cout << "Impossible\n";
      return 0;
    }
  }
  for (int i = 0; i < 26; ++i)
    if (din[i] == 0)
      if (!dfs(i)) {
        cout << "Impossible\n";
        return 0;
      }
  if (szo < 26) {
    cout << "Impossible\n";
    return 0;
  }
  for (int i = szo - 1; i >= 0; --i) printf("%c", ord[i] + 'a');
  printf("\n");
  return 0;
}
