#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
char a[105][105];
int in[105], d[105], an[30];
vector<int> v[30];
int main() {
  int n, i, j, k, y;
  bool flag = true;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%s", a[i]);
  for (i = 1; i < n && flag; i++) {
    for (j = 0;; j++)
      if (a[i][j] != a[i + 1][j]) break;
    if (a[i][j] == 0) continue;
    if (a[i + 1][j] == 0) flag = false;
    v[a[i][j] - 'a' + 1].push_back(a[i + 1][j] - 'a' + 1);
    in[a[i + 1][j] - 'a' + 1]++;
  }
  for (i = 1; i <= 26 && flag; i++) {
    for (j = 1; j <= 26; j++)
      if (!in[j] && !d[j]) break;
    if (j > 26) {
      flag = false;
      break;
    }
    d[j] = 1;
    an[i] = j;
    for (k = 0; k < v[j].size(); k++) {
      y = v[j][k];
      in[y]--;
    }
  }
  if (!flag)
    printf("Impossible\n");
  else {
    for (i = 1; i <= 26; i++) printf("%c", an[i] + 'a' - 1);
    printf("\n");
  }
  return 0;
}
