#include <bits/stdc++.h>
using namespace std;
int t, num[30];
string s, last;
vector<int> vec[30];
vector<int> ans;
queue<int> q;
int main() {
  cin >> t;
  cin >> last;
  t--;
  while (t--) {
    cin >> s;
    for (int i = 0; i < min(last.size(), s.size()); i++) {
      if (last[i] == s[i]) {
        if (i == min(last.size(), s.size()) - 1) {
          if (last.size() > s.size()) {
            cout << "Impossible" << endl;
            return 0;
          }
        }
        continue;
      } else {
        vec[(int)(last[i] - 'a' + 1)].push_back((int)(s[i] - 'a' + 1));
        num[(int)(s[i] - 'a' + 1)]++;
        last = s;
        break;
      }
    }
  }
  for (int i = 1; i <= 26; i++) {
    if (num[i] == 0) {
      q.push(i);
    }
  }
  while (!q.empty()) {
    int now = q.front();
    q.pop();
    ans.push_back(now);
    for (int i = 0; i < vec[now].size(); i++) {
      num[vec[now][i]]--;
      if (num[vec[now][i]] == 0) {
        q.push(vec[now][i]);
      }
    }
  }
  if (ans.size() == 26) {
    for (int i = 0; i < 26; i++) {
      cout << char(ans[i] + (int)('a') - 1);
    }
  } else {
    cout << "Impossible" << endl;
  }
  return 0;
}
