#include <bits/stdc++.h>
using namespace std;
int n, used[26];
string s[110];
vector<int> G[26], ans;
void Fill(string p, string q) {
  if (p.find(q) == 0) {
    cout << "Impossible";
    exit(0);
  }
  for (int i = 0; i < p.size(); i++) {
    if (p[i] != q[i]) {
      G[p[i] - 'a'].push_back(q[i] - 'a');
      break;
    }
  }
}
void dfs(int v) {
  used[v] = 1;
  for (int i = 0; i < G[v].size(); i++) {
    int to = G[v][i];
    if (used[to] == 1) {
      cout << "Impossible";
      exit(0);
    }
    if (used[to] == 0) {
      dfs(to);
    }
  }
  used[v] = 2;
  ans.push_back(v);
  return;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> s[i];
  }
  for (int i = 1; i < n; i++) {
    Fill(s[i], s[i + 1]);
  }
  for (int i = 0; i < 26; i++) {
    if (used[i] == 0) {
      dfs(i);
    }
  }
  for (int i = 25; i >= 0; i--) {
    cout << char(ans[i] + 'a');
  }
  return 0;
}
