#include <bits/stdc++.h>
using namespace std;
vector<int> adj[26];
int main() {
  int n, i, j, c = 0;
  cin >> n;
  vector<string> v;
  string second, t;
  for (i = 0; i < n; i++) {
    cin >> second;
    v.push_back(second);
  }
  for (i = 1; i < n; i++) {
    second = v[i - 1];
    t = v[i];
    bool flag = 0;
    for (j = 0; j < second.size() && j < t.size(); j++) {
      if (second[j] != t[j]) {
        flag = 1;
        adj[second[j] - 'a'].push_back(t[j] - 'a');
        break;
      }
    }
    if (flag == 0 && second.size() > t.size()) {
      cout << "Impossible" << endl;
      return 0;
    }
  }
  vector<int> deg(26, 0);
  for (i = 0; i < 26; i++) {
    for (auto x : adj[i]) deg[x]++;
  }
  queue<int> q;
  for (i = 0; i < 26; i++) {
    if (deg[i] == 0) q.push(i);
  }
  vector<int> v1;
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    v1.push_back(x);
    for (auto y : adj[x]) {
      if (--deg[y] == 0) q.push(y);
    }
    c++;
  }
  if (c != 26)
    cout << "Impossible" << endl;
  else {
    for (i = 0; i < 26; i++) cout << char(v1[i] + 'a');
  }
}
