func_code_string: #include <bits/stdc++.h>   using namespace std;   int cycle;   vector<int> adj[26], topo;   int color[26];   void dfs(int i) {     color[i] = 1;     for (auto nx : adj[i])       if (!color[nx])         dfs(nx);       else if (color[nx] == 1)         cycle = 1;     topo.push_back(i);     color[i] = 2;   }   int main() {     int n;     scanf( %d , &n);     string a[110];     for (int i = 0; i < n; i++) {       cin >> a[i];     }     if (n == 1) {       for (char c =  a ; c <=  z ; c++) {         cout << c;       }       return 0;     }     for (int i = 1; i < n; i++) {       int flag = 0;       for (int j = 0; j < (int)min(a[i - 1].size(), a[i].size()); j++) {         if (a[i - 1][j] != a[i][j]) {           adj[a[i - 1][j] -  a ].push_back(a[i][j] -  a );           flag = 1;           break;         }       }       if (!flag && a[i - 1].size() > a[i].size()) {         puts( Impossible );         return 0;       }     }     for (int i = 0; i < 26; i++) {       if (!color[i]) dfs(i);     }     if (cycle) {       puts( Impossible );       return 0;     }     reverse(topo.begin(), topo.end());     for (auto x : topo) cout << char(x +  a );     return 0;   }   