#include <bits/stdc++.h>
using namespace std;
long long int cant = 0;
vector<long long int> v[26];
map<long long int, long long int> in, out, vis;
string help = "abcdefghijklmnopqrstuvwxyz", ans = "";
void dfs(long long int id) {
  vis[id] = 1;
  in[id] = 1;
  for (long long int i = 0; i < v[id].size(); i++) {
    if (!vis[v[id][i]])
      dfs(v[id][i]);
    else if (!out[v[id][i]])
      cant = 1;
  }
  out[id] = 1;
  ans = help[id] + ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long int n, id = 0;
  cin >> n;
  string s[n];
  for (long long int i = 0; i < n; i++) cin >> s[i];
  for (long long int i = 0; i < n - 1; i++) {
    long long int j = 0;
    while (j < s[i].size() && j < s[i + 1].size() && s[i][j] == s[i + 1][j])
      j++;
    if (j == s[i].size()) continue;
    if (j == s[i + 1].size()) {
      cout << "Impossible";
      return 0;
    }
    v[s[i][j] - 'a'].push_back(s[i + 1][j] - 'a');
  }
  for (long long int i = 0; i < 26; i++)
    if (!vis[i]) dfs(i);
  if (cant)
    cout << "Impossible";
  else
    cout << ans;
}
