#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n;
  cin >> n;
  string str[n];
  vector<int> gx[26];
  for (int i = 0; i < n; i++) {
    cin >> str[i];
  }
  int indeg[26] = {0};
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      bool flag = true;
      for (int k = 0; k < min(str[i].length(), str[j].length()); k++) {
        if (str[i][k] != str[j][k]) {
          indeg[str[j][k] - 'a']++;
          gx[str[i][k] - 'a'].emplace_back(str[j][k] - 'a');
          flag = false;
          break;
        }
      }
      if (flag) {
        if (str[i].length() > str[j].length()) {
          cout << "Impossible";
          return 0;
        }
      }
    }
  }
  queue<int> q;
  int tot = 0;
  for (int i = 0; i < 26; i++) {
    if (indeg[i] == 0) {
      tot++;
      q.push(i);
    }
  }
  int x;
  vector<char> res;
  while (!q.empty()) {
    x = q.front();
    q.pop();
    res.emplace_back((char)'a' + x);
    for (int i : gx[x]) {
      indeg[i]--;
      if (indeg[i] == 0) {
        q.push(i);
        tot++;
      }
    }
  }
  if (tot == 26) {
    for (auto xx : res) {
      cout << xx;
    }
  } else {
    cout << "Impossible";
  }
  return 0;
}
