#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-6;
vector<int> mp[105], ans;
char s[105][105];
int len[105], tmp[30];
queue<int> q;
bool solve(int x, int y) {
  for (int i = 0; i < len[x] && i < len[y]; i++) {
    if (s[x][i] != s[y][i]) {
      mp[s[x][i] - 'a'].push_back(s[y][i] - 'a');
      tmp[s[y][i] - 'a']++;
      return true;
    }
  }
  if (len[x] > len[y]) return false;
}
bool ok() {
  for (int i = 0; i < 26; i++)
    if (tmp[i] == 0) {
      ans.push_back(i);
      q.push(i);
    }
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    for (int i = 0; i < mp[u].size(); i++) {
      int v = mp[u][i];
      tmp[v]--;
      if (tmp[v] == 0) {
        q.push(v);
        ans.push_back(v);
      }
    }
  }
  return ans.size() == 26;
}
int main() {
  int n;
  while (~scanf("%d", &n)) {
    for (int i = 1; i <= n; i++) {
      scanf("%s", s[i]);
      len[i] = strlen(s[i]);
    }
    bool flag = 0;
    for (int i = 1; i <= n; i++)
      for (int j = i + 1; j <= n; j++)
        if (!solve(i, j)) flag = 1;
    if ((!flag) && ok()) {
      for (int i = 0; i < 26; i++) printf("%c", ans[i] + 'a');
      printf("\n");
    } else
      printf("Impossible\n");
  }
  return 0;
}
