func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 2;   struct {     int x;     int last;     string it;   } a;   struct kek {     string w, e, r, t;   };   map<char, int> bak;   vector<string> st[N + 5][7], q;   vector<pair<string, string> > be, en;   vector<kek> ans;   int n, m;   string ins;   char c;   bool frog = false;   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     bak[ u ] = 1;     bak[ a ] = 2;     bak[ o ] = 3;     bak[ e ] = 4;     bak[ i ] = 5;     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> ins;       m = ins.length();       a.x = 0;       a.last = 0;       for (int j = 0; j < m; j++) {         if (ins[j] ==  u  || ins[j] ==  a  || ins[j] ==  o  || ins[j] ==  e  ||             ins[j] ==  i ) {           a.x++;           c = ins[j];           a.last = bak[c];         }       }       a.it = ins;       st[a.x][a.last].push_back(ins);     }     for (int i = 1; i <= N; i++) {       q.clear();       for (int j = 1; j <= 5; j++) {         int k;         for (k = 1; k < st[i][j].size(); k += 2) {           en.push_back({st[i][j][k], st[i][j][k - 1]});         }         if (k == st[i][j].size()) {           q.push_back(st[i][j][k - 1]);         }       }       for (int j = 1; j < q.size(); j += 2) {         be.push_back({q[j], q[j - 1]});       }     }     while (!be.empty() && !en.empty()) {       ans.push_back(           {be.back().first, en.back().first, be.back().second, en.back().second});       en.pop_back();       be.pop_back();     }     for (int i = 1; i < en.size(); i += 2) {       ans.push_back(           {en[i].first, en[i - 1].first, en[i].second, en[i - 1].second});     }     cout << ans.size() << endl;     for (int i = 0; i < ans.size(); ++i) {       cout << ans[i].w <<     << ans[i].e << endl            << ans[i].r <<     << ans[i].t << endl;     }   }   