/*
\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000 \u2227\uff3f\u2227
\u3000\u3000\u3000\u3000\u3000 \u2227\uff3f\u2227 \u3000\uff08\u00b4<_\uff40 \uff09\u3000 Welcome to My Coding Space ^_^
\u3000\u3000\u3000\u3000 \uff08 \u00b4_\u309d`\uff09\u3000/\u3000 \u2312i
\u3000\u3000\u3000\u3000\uff0f\u3000\u3000\u3000\uff3c\u3000 \u3000  |\u3000|
\u3000\u3000\u3000 /\u3000\u3000 /\uffe3\uffe3\uffe3\uffe3/\u3000|\u3000|
\u3000 \uff3f_(__\uff86\u3064/\u3000\u3000 \u3000 / .| .|\uff3f\uff3f\uff3f\uff3f
\u3000 \u3000\u3000\u3000\uff3c/\uff3f\uff3f\uff3f\uff3f/\u3000\uff08u\u3000\u2283
*/

#include <iostream>
#include <map>
#include <vector>

using namespace std;
using tp = int64_t;

signed main() {
  tp n;
  string a, b;
  vector<tp> sa, sb;
  vector<pair<tp, tp>> tar;
  map<tp, vector<tp>> cnta, cntb;
  cin >> n >> a >> b;
  for (tp i = 0; i < n; ++i) {
    if (a[i] != '?') {
      cnta[a[i]].push_back(i);
    } else {
      sa.push_back(i);
    }
  }
  for (tp i = 0; i < n; ++i) {
    if (b[i] != '?') {
      cntb[b[i]].push_back(i);
    } else {
      sb.push_back(i);
    }
  }
  for (char i = 'a'; i <= 'z'; ++i) {
    while (cnta[i].size() && cntb[i].size()) {
      tar.emplace_back(cnta[i].back(), cntb[i].back());
      cnta[i].pop_back();
      cntb[i].pop_back();
    }
    while (cnta[i].size() && sb.size()) {
      tar.emplace_back(cnta[i].back(), sb.back());
      cnta[i].pop_back();
      sb.pop_back();
    }
    while (cntb[i].size() && sa.size()) {
      tar.emplace_back(sa.back(), cntb[i].back());
      cntb[i].pop_back();
      sa.pop_back();
    }
  }
  while (sb.size() && sa.size()) {
    tar.emplace_back(sa.back(), sb.back());
    sb.pop_back();
    sa.pop_back();
  }
  cout << tar.size() << '\n';
  for (auto&& [x, y] : tar) {
    cout << x + 1 << ' ' << y + 1 << '\n';
  }
  return 0;
}

/*#################################################################
#.................................................................#
#.............#......#............Created.By.RBTree...............#
#............#.#....#.#........... Limiting-Factor................#
#.............########............................................#
#............#........#..##############################...........#
#...........#..V....V......#..#........................#..#...#...#
#............#........#....#..........###..###..........#..#.#.#..#
#............#..X##X..#..#............#....#.#...........#..#...#.#
#...........#...N##N...#..#...........###..###..........#.........#
#.......MOO..#..@.....#....#.#.#.#...................#.#..........#
#.............########.....#.#.#.##############.#.#..#.#..........#
#..........................#.#.#.#.............#.#.#.#.#..........#
#......#########...........#.#.#.#.................#.#.#..........#
#.....#.........#..........#.#.#.#.................#.#.#..........#
#.#.#.#G#R#A#S#S#.#.#......#.#.#.#.................#.#.#..........#
#.###################......#.#.#.#.................#.#.#..........#
#...........................#.#.#...................#.#...........#
#.................................................................#
#################################################################*/