#include <bits/stdc++.h>
using namespace std;
vector<int> g[26], ans;
int n, j, used[26];
bool f = true;
string s, s2;
void dfs(int l) {
  if (used[l] == 1) f = false;
  if (used[l]) return;
  used[l] = 1;
  for (int i = 0; i < g[l].size(); ++i) dfs(g[l][i]);
  used[l] = 2;
  ans.push_back(l);
}
int main() {
  cin >> n;
  cin >> s;
  int first = s[0] - 'a';
  for (int i = 1; i < n && f; ++i) {
    cin >> s2;
    for (j = 0; j < s.size() && j < s2.size(); ++j) {
      if (s[j] != s2[j]) {
        g[s[j] - 'a'].push_back(s2[j] - 'a');
        break;
      }
    }
    if (j == s2.size()) f = false;
    s = s2;
  }
  for (int i = 0; i < 26; ++i) dfs(i);
  if (f) {
    for (int i = 25; i >= 0; --i) cout << (char)('a' + ans[i]);
  } else
    cout << "Impossible";
  return 0;
}
