func_code_string: #include <bits/stdc++.h>   using namespace std;   long long powm(long long base, long long exp, long long mod = 1000000007) {     long long ans = 1;     while (exp) {       if (exp & 1) ans = (ans * base) % mod;       exp >>= 1, base = (base * base) % mod;     }     return ans;   }   void fastscan(int &x) {     register int c = getchar();     x = 0;     for (; (c < 48 || c > 57); c = getchar())       ;     for (; c > 47 && c < 58; c = getchar()) {       x = (x << 1) + (x << 3) + c - 48;     }   }   const int N = 7e4 + 5;   const int M = 10;   vector<string> data;   long long root, NEW;   struct node {     long long nxt[10], cnt;   } trie[1000000];   void insert(string str) {     long long v = root;     for (int i = 0; i < (str).size(); i++) {       long long x = str[i] -  0 ;       if (trie[v].nxt[x]) {         v = trie[v].nxt[x];         trie[v].cnt++;         continue;       }       trie[v].nxt[x] = ++NEW;       v = trie[v].nxt[x];       trie[v].cnt++;     }   }   void go(string str) {     for (int k = 0; k < (str).size(); k++) {       insert(str.substr(k, (str).size() - k));     }   }   long long query(string str) {     long long v = root, depth = 0;     for (int i = 0; i < (str).size(); i++) {       depth++;       long long x = str[i] -  0 ;       if (trie[trie[v].nxt[x]].cnt) {         v = trie[v].nxt[x];         continue;       }       return depth;     }     return 1000111000111000111LL;   }   void del(string str) {     long long v = root;     for (int i = 0; i < (str).size(); i++) {       long long x = str[i] -  0 ;       if (trie[v].nxt[x]) {         v = trie[v].nxt[x];         trie[v].cnt--;         continue;       }       break;     }   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long n;     string str;     cin >> n;     for (int i = 0; i < n; i++) {       cin >> str;       go(str);       data.push_back(str);     }     for (int i = 0; i < n; i++) {       str = data[i];       for (int k = 0; k < (str).size(); k++) {         del(str.substr(k, (str).size() - k));       }       string cmp =  9999999999 ;       for (int k = 0; k < (str).size(); k++) {         string y = str.substr(k, (str).size() - k);         long long tmp = query(y);         if (tmp == 1000111000111000111LL) continue;         string z = y.substr(0, tmp);         if ((z).size() < (cmp).size()) cmp = z;       }       go(str);       cout << cmp << endl;     }   }   