#include <bits/stdc++.h>
using namespace std;
vector<int> graph[27];
bool vis[27] = {false}, cycle[27] = {false};
vector<int> res;
void dfs(int cur) {
  vis[cur] = true;
  cycle[cur] = true;
  for (int i = 0; i < (int)graph[cur].size(); i++) {
    if (cycle[graph[cur][i]]) {
      cout << "Impossible";
      exit(0);
    }
    if (!vis[graph[cur][i]]) {
      dfs(graph[cur][i]);
    }
  }
  cycle[cur] = false;
  res.push_back(cur);
}
int main() {
  int n = 0;
  string arr[101];
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  for (int i = 0; i < n - 1; i++) {
    bool f = false;
    int x = 0;
    for (x = 0; x < (int)min(arr[i].size(), arr[i + 1].size()); x++) {
      if (arr[i][x] != arr[i + 1][x]) {
        f = true;
        break;
      }
    }
    if (!f && arr[i].size() >= arr[i + 1].size()) {
      cout << "Impossible";
      return 0;
    }
    if (f) graph[arr[i + 1][x] - 97].push_back(arr[i][x] - 97);
  }
  for (char i = 'a'; i <= 'z'; i++) {
    if (!vis[i - 97]) {
      dfs(i - 97);
    }
  }
  for (int i = 0; i < (int)res.size(); i++) {
    cout << char(res[i] + 97);
  }
  return 0;
}
