#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;
}
