#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long MAX = 1e14 + 8;
const long long MAXN = 1e5 + 3;
const long long eps = 1e-4;
vector<long long> v[27];
vector<long long> res;
string s[103];
long long m[27];
queue<long long> q;
int main() {
  long long n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
  }
  for (int i = 1; i < n; i++) {
    if (s[i][0] != s[i - 1][0]) {
      v[s[i - 1][0] - 'a'].push_back(s[i][0] - 'a');
      m[s[i][0] - 'a']++;
    } else {
      for (int j = 0; j < min(s[i].size(), s[i - 1].size()); j++) {
        if (s[i][j] != s[i - 1][j]) {
          m[s[i][j] - 'a']++;
          v[s[i - 1][j] - 'a'].push_back(s[i][j] - 'a');
          break;
        }
        if (j == (min(s[i].size(), s[i - 1].size()) - 1) &&
            s[i].size() < s[i - 1].size()) {
          cout << "Impossible";
          return 0;
        }
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    if (m[i] == 0) {
      q.push(i);
    }
  }
  long long sum = 0;
  while (!q.empty()) {
    sum++;
    long long l = q.front();
    q.pop();
    res.push_back(l);
    for (int i = 0; i < v[l].size(); i++) {
      m[v[l][i]]--;
      if (m[v[l][i]] == 0) {
        q.push(v[l][i]);
      }
    }
  }
  if (sum != 26)
    cout << "Impossible";
  else {
    for (int i = 0; i < res.size(); i++) {
      cout << (char)(res[i] + 'a');
    }
  }
  return 0;
}
