#include <bits/stdc++.h>   using namespace std;   const int N = 122;   string s[N];   bool eq[N];   vector<int> g[30];   int used[N];   string ans;   void dfs(int x) {     used[x] = 1;     for (int to : g[x]) {       if (!used[to]) {         dfs(to);       } else if (used[to] == 1) {         puts( Impossible );         exit(0);       }     }     used[x] = 2;     ans += x +  a ;   }   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       cin >> s[i];     }     fill(eq, eq + N, 1);     for (int j = 0; j < N; ++j) {       for (int i = 1; i < n; ++i) {         if (s[i].size() > j && eq[i]) {           if (s[i - 1].size() > j) {             if (s[i - 1][j] != s[i][j]) {               g[s[i - 1][j] -  a ].push_back(s[i][j] -  a );               eq[i] = 0;             } else {               eq[i] = 1;             }           } else {             eq[i] = 0;           }         } else if (eq[i]) {           puts( Impossible );           return 0;         } else {           eq[i] = 0;         }       }     }     for (int i = 0; i < 26; ++i) {       if (!used[i]) {         dfs(i);       }     }     reverse(ans.begin(), ans.end());     cout << ans;     return 0;   }   