func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Boot {     int _pos;     char _char;   };   struct PairBoots {     Boot _left;     Boot _right;   };   int main() {     int n;     string leftBoots;     string rightBoots;     vector<vector<Boot>> leftBootsBucket(27);     vector<vector<Boot>> rightBootsBucket(27);     vector<PairBoots> ans;     cin >> n;     cin.ignore();     getline(cin, leftBoots);     getline(cin, rightBoots);     for (int i = 0; i < n; i++) {       Boot leftBoot;       leftBoot._pos = i;       leftBoot._char = leftBoots[i];       if (leftBoot._char ==  ? )         leftBootsBucket[26].push_back(leftBoot);       else         leftBootsBucket[leftBoots[i] -  a ].push_back(leftBoot);       Boot rightBoot;       rightBoot._pos = i;       rightBoot._char = rightBoots[i];       if (rightBoot._char ==  ? )         rightBootsBucket[26].push_back(rightBoot);       else         rightBootsBucket[rightBoots[i] -  a ].push_back(rightBoot);     }     for (int i = 0; i < 27; i++) {       for (int j = 0;            j < leftBootsBucket[i].size() || j < rightBootsBucket[i].size(); j++) {         PairBoots temp;         if (j < leftBootsBucket[i].size() && j < rightBootsBucket[i].size()) {           temp._left = leftBootsBucket[i][j];           temp._right = rightBootsBucket[i][j];         } else {           if (j < leftBootsBucket[i].size()) {             if (rightBootsBucket[26].size() != 0) {               temp._left = leftBootsBucket[i][j];               temp._right = rightBootsBucket[26][rightBootsBucket[26].size() - 1];               rightBootsBucket[26].pop_back();               goto here;             }           }           if (j < rightBootsBucket[i].size()) {             if (leftBootsBucket[26].size() != 0) {               temp._left = leftBootsBucket[26][leftBootsBucket[26].size() - 1];               temp._right = rightBootsBucket[i][j];               leftBootsBucket[26].pop_back();               goto here;             }           }           break;         }       here:         ans.push_back(temp);       }     }     cout << ans.size() <<   n ;     for (auto i : ans) {       cout << i._left._pos + 1 <<     << i._right._pos + 1 <<   n ;     }     return 0;   }   