#include <bits/stdc++.h>
using namespace std;
string st[110];
long long par[30][30], done[30], ring_done[30];
vector<vector<long long> > v(30);
bool has_ring;
bool check_par(long long ver) {
  long long i;
  bool all_done = true;
  long long no_of_par = v[ver].size();
  for (i = 0; i < no_of_par; ++i) {
    if (done[v[ver][i]] == 0) {
      all_done = false;
      break;
    }
  }
  return all_done;
}
void ring_dfs(long long start, long long ver) {
  long long i;
  if ((ver == start) && (ring_done[ver] == 1))
    has_ring = true;
  else if (ring_done[ver] == 0) {
    ring_done[ver] = 1;
    long long no_of_par = v[ver].size();
    for (i = 0; i < no_of_par; ++i) {
      ring_dfs(start, v[ver][i]);
    }
  }
}
int main() {
  long long i, j, k, a, b, c, n, m;
  cin >> n;
  for (i = 0; i < n; ++i) cin >> st[i];
  memset(par, 0, sizeof(par));
  bool flag = false;
  for (i = 0; i < n; ++i) {
    if (!flag) {
      for (j = i + 1; j < n; ++j) {
        if (!flag) {
          if (st[i] != st[j]) {
            long long min_len = min(st[i].length(), st[j].length());
            for (k = 0; k < min_len; ++k) {
              if (st[i][k] != st[j][k]) break;
            }
            if (k == min_len) {
              if (min_len == st[j].length()) flag = true;
            } else {
              if (par[st[j][k] - 'a'][st[i][k] - 'a'] == 1)
                flag = true;
              else {
                if (par[st[i][k] - 'a'][st[j][k] - 'a'] == 0) {
                  par[st[i][k] - 'a'][st[j][k] - 'a'] = 1;
                  v[st[j][k] - 'a'].push_back(st[i][k] - 'a');
                }
              }
            }
          }
        }
      }
    }
  }
  for (i = 0; i < 26; ++i) {
    has_ring = false;
    memset(ring_done, 0, sizeof(ring_done));
    ring_dfs(i, i);
    if (has_ring) {
      flag = true;
      break;
    }
  }
  if (flag)
    cout << "Impossible";
  else {
    memset(done, 0, sizeof(done));
    for (i = 0; i < 26; ++i) {
      for (j = 0; j < 26; ++j) {
        if (check_par(j) && done[j] == 0) {
          done[j] = 1;
          cout << (char)('a' + j);
        }
      }
    }
  }
  return 0;
}
