#include <bits/stdc++.h>
using namespace std;
string s[123];
vector<int> adj[30], ans;
int grau[30], n;
int comp(int a, int b) {
  int ta = ((int)((s[a]).size())), tb = ((int)((s[b]).size()));
  int i = 0, u, v;
  while (i < ta && i < tb) {
    if (s[a][i] != s[b][i]) {
      u = s[a][i] - 'a';
      v = s[b][i] - 'a';
      adj[u].push_back(v);
      grau[v]++;
      return 1;
    }
    i++;
  }
  return (ta < tb);
}
void bfs() {
  queue<int> q;
  for (int i = 0; i < 26; ++i) {
    if (grau[i] == 0) {
      q.push(i);
      ans.push_back(i);
    }
  }
  int u;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (int v : adj[u]) {
      grau[v]--;
      if (grau[v] == 0) {
        q.push(v);
        ans.push_back(v);
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> s[i];
  }
  for (int i = 1; i < n; ++i) {
    int r = comp(i - 1, i);
    if (r == 0) {
      cout << "Impossible\n";
      return 0;
    }
  }
  bfs();
  if (((int)((ans).size())) == 26) {
    for (int i = 0; i < 26; ++i) cout << (char)(ans[i] + 'a');
    cout << '\n';
  } else
    cout << "Impossible\n";
  return 0;
}
