#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<string> name(n);
  for (int i = 0; i < n; i++) cin >> name[i];
  vector<vector<int> > graph(26);
  vector<int> inDegree(26, 0);
  for (int i = 1; i < n; i++) {
    string s = name[i - 1];
    string t = name[i];
    int k = 0;
    while (s[k] == t[k]) k++;
    if (k == s.length())
      continue;
    else if (k == t.length()) {
      cout << "Impossible";
      return 0;
    }
    graph[s[k] - 'a'].push_back(t[k] - 'a');
    inDegree[t[k] - 'a']++;
  }
  set<int> s;
  for (int i = 0; i < 26; i++) {
    if (inDegree[i] == 0) s.insert(i);
  }
  vector<int> ans;
  while (!s.empty()) {
    int u = *s.begin();
    s.erase(s.begin());
    ans.push_back(u);
    for (auto v : graph[u]) {
      if (--inDegree[v] == 0) s.insert(v);
    }
  }
  if (ans.size() != 26)
    cout << "Impossible";
  else {
    for (int i = 0; i < 26; i++) cout << char(ans[i] + 'a');
  }
  return 0;
}
