#include <bits/stdc++.h>
using namespace std;
vector<int> u[192];
int p[192];
stack<char> S;
bool E = 0;
void dfs(int x) {
  p[x] = 1;
  for (auto i : u[x]) {
    if (!p[i])
      dfs(i);
    else if (p[i] == 1)
      E = 1;
  }
  S.push(x);
  p[x] = 2;
}
int main() {
  string s, r = "";
  int t;
  cin >> t;
  while (t--) {
    cin >> s;
    int j = 0, k = min(s.size(), r.size());
    for (; j < k; j++)
      if (s[j] != r[j]) {
        u[r[j]].push_back(s[j]);
        break;
      }
    if (j == k && s.size() < r.size()) E = 1;
    r = s;
  }
  for (int i = 'z'; i >= 'a'; i--)
    if (!p[i]) dfs(i);
  if (E) return cout << "Impossible\n", 0;
  while (!S.empty()) cout << S.top(), S.pop();
  cout << endl;
}
