#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const long long INF = 1e9;
const long double eps = 1e-6;
vector<int> g[30];
int n, l;
bool vis[30], mark[30];
bool impossible = false;
string ans = "";
void dfs(int u) {
  vis[u] = mark[u] = true;
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    if (!vis[v])
      dfs(v);
    else if (mark[v])
      impossible = true;
  }
  ans = (char)('a' + u) + ans;
  mark[u] = false;
}
int main() {
  ios::sync_with_stdio(false);
  string cur;
  string prev;
  cin >> n >> prev;
  n--;
  while (n--) {
    cin >> cur;
    l = min(cur.size(), prev.size());
    int i;
    for (i = 0; i < l; i++) {
      if (prev[i] != cur[i]) {
        g[prev[i] - 'a'].push_back(cur[i] - 'a');
        break;
      }
    }
    if (i == l && prev[i]) impossible = true;
    prev = cur;
  }
  for (int i = 25; i >= 0; i--) {
    if (!vis[i]) dfs(i);
  }
  if (impossible)
    cout << "Impossible";
  else
    cout << ans;
  return 0;
}
