#include <bits/stdc++.h>
using namespace std;
int n;
int deg[105] = {0}, q[105];
string s[105];
bool a[105][105] = {0}, dd[105] = {0}, b[105][105] = {0};
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> s[i];
  bool check;
  for (int i = 1; i < n; i++) {
    check = 1;
    for (int j = 0; j < min(s[i].length(), s[i + 1].length()); j++)
      if (s[i][j] != s[i + 1][j]) {
        if (a[s[i][j] - 96][s[i + 1][j] - 96] == 0) deg[s[i + 1][j] - 96]++;
        a[s[i][j] - 96][s[i + 1][j] - 96] = 1;
        b[s[i][j] - 96][s[i + 1][j] - 96] = 1;
        check = 0;
        break;
      }
    if (check && s[i].length() > s[i + 1].length()) {
      cout << "Impossible";
      return 0;
    }
  }
  for (int k = 1; k <= 26; k++)
    for (int i = 1; i <= 26; i++)
      for (int j = 1; j <= 26; j++)
        if (b[i][k] && b[k][j]) b[i][j] = 1;
  for (int i = 1; i <= 26; i++)
    for (int j = 1; j <= 26; j++)
      if (b[i][j] && b[j][i]) {
        cout << "Impossible";
        return 0;
      }
  int l = 1, r = 0;
  for (int i = 1; i <= 26; i++)
    if (deg[i] == 0) cout << (char)(i + 96), q[++r] = i, dd[i] = 1;
  while (l <= r) {
    int u = q[l++];
    for (int i = 1; i <= 26; i++)
      if (a[u][i] && dd[i] == 0)
        if (--deg[i] == 0) cout << (char)(i + 96), q[++r] = i, dd[i] = 1;
  }
  return 0;
}
