func_code_string: #include <bits/stdc++.h>   using namespace std;   char s[105][105];   int sz[105];   vector<int> g[105];   int usd[30];   int ord[30], szo = 0, din[30];   bool dfs(int v) {     usd[v] = 1;     for (int i = 0; i < g[v].size(); ++i) {       int u = g[v][i];       if (usd[u] == 1)         return false;       else if (!usd[u])         if (!dfs(u)) return false;     }     usd[v] = 2;     ord[szo++] = v;     return true;   }   int main() {     int n;     cin >> n;     for (int i = 0; i < n; ++i) {       scanf( %s , s[i]);       sz[i] = strlen(s[i]);     }     for (int i = 1; i < n; ++i) {       int j, mn = min(sz[i], sz[i - 1]);       for (j = 0; j < mn; ++j)         if (s[i][j] != s[i - 1][j]) {           g[s[i - 1][j] -  a ].push_back(s[i][j] -  a );           din[s[i][j] -  a ]++;           break;         }       if (j == mn && sz[i] == mn) {         cout <<  Impossible n ;         return 0;       }     }     for (int i = 0; i < 26; ++i)       if (din[i] == 0)         if (!dfs(i)) {           cout <<  Impossible n ;           return 0;         }     if (szo < 26) {       cout <<  Impossible n ;       return 0;     }     for (int i = szo - 1; i >= 0; --i) printf( %c , ord[i] +  a );     printf(  n );     return 0;   }   