func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   string a, b;   set<int> A, B;   queue<int> qA, qB;   map<char, queue<int> > q;   vector<pair<int, int> > resp;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cin >> n >> a >> b;     for (int i = 0; i < n; ++i) {       if (a[i] ==  ? )         qA.push(i);       else {         q[a[i]].push(i);         A.insert(i);       }     }     for (int i = 0; i < n; ++i) {       if (b[i] ==  ? )         qB.push(i);       else         B.insert(i);     }     for (int i = 0; i < n; ++i) {       if (!q[b[i]].empty()) {         resp.push_back({q[b[i]].front(), i});         B.erase(i);         A.erase(q[b[i]].front());         q[b[i]].pop();       }     }     while (!qA.empty() && !B.empty()) {       auto it = B.begin();       resp.push_back({qA.front(), *it});       qA.pop();       B.erase(it);     }     while (!qB.empty() && !A.empty()) {       auto it = A.begin();       resp.push_back({*it, qB.front()});       qB.pop();       A.erase(it);     }     while (!qA.empty() && !qB.empty()) {       resp.push_back({qA.front(), qB.front()});       qA.pop();       qB.pop();     }     cout << (int)resp.size() <<   n ;     for (auto x : resp) cout << x.first + 1 <<     << x.second + 1 <<   n ;     return 0;   }   