#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
bool e[30][30];
vector<int> G[30];
int deg[30], mark[30];
string s[MAXN];
int n;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> s[i];
  for (int i = 1; i < n; i++) {
    int h = s[i].size();
    for (int j = 0; j < h; j++) {
      if (j >= s[i + 1].size()) {
        cout << "Impossible" << endl;
        exit(0);
      }
      if (s[i][j] != s[i + 1][j]) {
        int x = s[i][j] - 'a';
        int y = s[i + 1][j] - 'a';
        if (!e[x][y]) {
          e[x][y] = 1;
          G[x].push_back(y);
          deg[y]++;
        }
        break;
      }
    }
  }
  vector<int> res;
  queue<int> q;
  for (int i = 0; i < 26; i++)
    if (deg[i] == 0) q.push(i);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    res.push_back(u);
    mark[u] = 1;
    for (auto v : G[u]) {
      deg[v]--;
      if (deg[v] == 0) q.push(v);
    }
  }
  for (int i = 0; i < 26; i++)
    if (!mark[i]) {
      cout << "Impossible" << endl;
      exit(0);
    }
  for (auto x : res) cout << (char)(x + 'a');
  cout << endl;
  return 0;
}
