func_code_string: #include <bits/stdc++.h>   using namespace std;   char str[120][120];   int n;   int grid[26][26];   int ru[26], vis[26];   char ans[30];   int cheat;   void cmp(int a, int b) {     int lena = strlen(str[a]);     int lenb = strlen(str[b]);     int len = min(lena, lenb);     for (int i = 0; i < len; i++) {       if (str[a][i] != str[b][i]) {         int from = str[a][i] -  a ;         int to = str[b][i] -  a ;         grid[from][to] = 1;         return;       }     }     if (lena > lenb) cheat = 1;   }   void topoSort() {     int i, j, t = 0;     for (i = 0; i < 26; i++) {       for (j = 0; j < 26; j++) {         if (i != j && grid[i][j]) {           ru[j]++;         }       }     }     while (1) {       int found = 0;       for (i = 0; i < 26; i++) {         if (!vis[i] && ru[i] == 0) {           found = 1;           char ch = i +  a ;           ans[t++] = ch;           for (j = 0; j < 26; j++) {             if (grid[i][j]) {               ru[j]--;             }           }           vis[i] = 1;           break;         }       }       if (!found) break;     }     if (strlen(ans) != 26)       cout <<  Impossible  << endl;     else       printf( %s n , ans);   }   int main() {     memset(grid, 0, sizeof(grid));     memset(ru, 0, sizeof(ru));     memset(vis, 0, sizeof(vis));     cin >> n;     int i, j;     for (i = 0; i < n; i++) {       scanf( %s , str[i]);     }     for (i = 0; i < n; i++) {       for (j = i + 1; j < n; j++) {         cheat = 0;         cmp(i, j);         if (cheat) {           cout <<  Impossible  << endl;           return 0;         }       }     }     topoSort();     return 0;   }   