#include <bits/stdc++.h>
using namespace std;
char str[105][105], ans[30];
bool maps[30][30], vis[30];
int deg[30];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%s", str[i]);
  }
  bool flag = 0;
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < strlen(str[i]); j++) {
      if (j >= strlen(str[i - 1])) {
        break;
      }
      if (str[i - 1][j] != str[i][j]) {
        if (!maps[str[i - 1][j] - 'a'][str[i][j] - 'a']) {
          maps[str[i - 1][j] - 'a'][str[i][j] - 'a'] = 1;
          deg[str[i][j] - 'a']++;
        }
        break;
      }
      if (j == strlen(str[i]) - 1) {
        if (strlen(str[i - 1]) > strlen(str[i])) {
          flag = 1;
          break;
        }
      }
    }
  }
  if (flag) {
    printf("Impossible\n");
    return 0;
  }
  stack<int> S;
  for (int i = 0; i < 26; i++) {
    if (deg[i] == 0) {
      S.push(i);
    }
  }
  int num = 0;
  while (!S.empty()) {
    int f = S.top();
    S.pop();
    ans[num++] = f + 'a';
    for (int j = 0; j < 26; j++) {
      if (maps[f][j]) {
        deg[j]--;
        if (deg[j] == 0) {
          S.push(j);
        }
      }
    }
  }
  ans[26] = '\0';
  if (num < 26)
    printf("Impossible\n");
  else
    puts(ans);
  return 0;
}
