#include <bits/stdc++.h>
using namespace std;
string in[101];
int N;
vector<int> E[26];
bool pos;
int vis[26];
vector<char> abc;
void dfs(int u) {
  vis[u] = 0;
  for (int v, i = 0; i < E[u].size() && pos; i++) {
    v = E[u][i];
    if (vis[v] == 0) {
      pos = false;
    } else if (vis[v] == -1) {
      dfs(v);
    }
  }
  vis[u] = 1;
  abc.push_back(u + 'a');
}
int main() {
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> in[i];
  }
  string w1, w2;
  pos = true;
  for (int w = 0; w < N - 1 && pos; w++) {
    w1 = in[w];
    w2 = in[w + 1];
    int i = 0;
    while (i < w1.length() && i < w2.length() && w1[i] == w2[i]) i++;
    if (i == w2.length() && i < w1.length())
      pos = false;
    else if (i == w1.length())
      continue;
    else {
      E[w2[i] - 'a'].push_back(w1[i] - 'a');
    }
  }
  memset(vis, -1, sizeof(vis));
  for (int i = 0; i < 26; i++) {
    if (vis[i] == -1) dfs(i);
  }
  if (!pos) {
    cout << "Impossible" << endl;
  } else {
    for (int i = 0; i < abc.size(); i++) {
      cout << abc[i];
    }
    cout << endl;
  }
}
