#include <bits/stdc++.h>
using namespace std;
stack<int> s;
vector<int> tsort;
int max(int a, int b) { return a > b ? a : b; }
void dfs(vector<set<int>> &num, vector<bool> &visitados, int i) {
  visitados[i] = 1;
  for (auto itr = num[i].begin(); itr != num[i].end(); itr++) {
    if (!visitados[*itr]) {
      dfs(num, visitados, *itr);
    }
  }
  s.push(i);
}
int check_cycle(vector<set<int>> &num) {
  unordered_map<int, int> pos;
  int ind = 0;
  while (!s.empty()) {
    pos[s.top()] = ind;
    tsort.push_back(s.top());
    ind += 1;
    s.pop();
  }
  for (int i = 99; i <= 122; i++) {
    for (auto itr = num[i].begin(); itr != num[i].end(); itr++) {
      if (pos[i] > pos[*itr]) {
        return false;
      }
    }
  }
  return true;
}
int main() {
  int i, j, k, a, b, c, n, maxi;
  char ant, sig;
  int posible = 1;
  vector<string> s;
  vector<set<int>> num(300);
  string aux;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> aux;
    s.push_back(aux);
  }
  for (i = 0; i < s.size(); i++) {
    for (j = i + 1; j < s.size(); j++) {
      maxi = max(s[i].size(), s[j].size());
      a = 0;
      b = 0;
      for (k = 0; k < maxi; k++) {
        if (s[i][a] == s[j][b]) {
          a++;
          b++;
        } else {
          ant = s[i][a];
          sig = s[j][b];
          num[ant].insert(sig);
          ant = sig;
          break;
        }
        if (a == s[i].size() || b == s[j].size()) {
          if (b == s[j].size()) {
            cout << "Impossible";
            return 0;
          }
          break;
        }
      }
    }
  }
  vector<bool> visitados(300, 0);
  for (i = 97; i <= 122; i++) {
    if (!visitados[i]) {
      dfs(num, visitados, i);
    }
  }
  int verdad;
  if (check_cycle(num)) {
    for (char x = 'a'; x != '{'; x++) {
      verdad = 0;
      for (i = 0; i < tsort.size(); i++) {
        if (tsort[i] == int(x)) {
          verdad = 1;
          break;
        }
      }
      if (!verdad) {
        tsort.push_back(int(x));
      }
    }
    for (i = 0; i < tsort.size(); i++) {
      cout << char(tsort[i]);
    }
  } else {
    cout << "Impossible";
  }
  return 0;
}
