#include <bits/stdc++.h>
using namespace std;
char str[105][105];
int G[27][27] = {}, deg[27];
int main() {
  int n, i, j, k, flag = 1;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%s", str[i]);
    for (j = 0; j < i; j++) {
      for (k = 0; str[j][k] && str[i][k]; k++)
        if (str[j][k] != str[i][k]) break;
      if (str[j][k] && str[i][k]) G[str[i][k] - 'a'][str[j][k] - 'a'] = 1;
      if (!str[i][k] && str[j][k]) flag = 0;
    }
  }
  for (i = 0; i < 26; i++)
    for (j = 0; j < 26; j++)
      if (G[i][j]) deg[j]++;
  queue<int> q;
  for (j = 0; j < 26; j++)
    if (!deg[j]) q.push(j);
  vector<int> lst;
  while (!q.empty()) {
    i = q.front();
    lst.push_back(i);
    q.pop();
    for (j = 0; j < 26; j++)
      if (G[i][j]) {
        deg[j]--;
        if (!deg[j]) q.push(j);
      }
  }
  if (flag && lst.size() == 26) {
    for (i = 25; i >= 0; i--) printf("%c", char(lst[i] + 'a'));
    puts("");
  } else
    puts("Impossible");
}
