#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > letter;
vector<int> colour(26, 0);
vector<int> answer;
bool isBad = false;
void dfs(int v) {
  colour[v] = 1;
  for (int i = 0; i < letter[v].size(); i++) {
    int to = letter[v][i];
    if (colour[to] == 1) {
      isBad = true;
    } else if (colour[to] == 0) {
      dfs(to);
    }
  }
  answer.push_back(v);
  colour[v] = -1;
}
int main() {
  int n;
  cin >> n;
  string s1;
  cin >> s1;
  string s2;
  letter = vector<vector<int> >(26);
  for (int i = 1; i < n; i++) {
    cin >> s2;
    int j = 0;
    while (j < s1.size() && j < s2.size() && s1[j] == s2[j]) {
      j++;
    }
    if (s1.size() != s2.size() && j == s2.size()) {
      cout << "Impossible";
      return 0;
    }
    letter[s1[j] - 'a'].push_back(s2[j] - 'a');
    s1 = s2;
  }
  for (int i = 0; i < 26; i++) {
    if (colour[i] == 0) {
      dfs(i);
      if (isBad) {
        cout << "Impossible";
        return 0;
      }
    }
  }
  for (int i = answer.size() - 1; i >= 0; i--) {
    cout << char(answer[i] + 'a');
  }
  return 0;
}
