#include <bits/stdc++.h>
using namespace std;
queue<int> q[30];
char s[150005], t[150005];
int aa[150005][2];
int main() {
  int n, m = 0, a;
  scanf("%d%s%s", &n, s, t);
  for (int i = 0; i < n; i++) {
    if (s[i] == '?')
      q[0].push(i + 1);
    else
      q[s[i] - 'a' + 1].push(i + 1);
  }
  for (int i = 0; i < n; i++) {
    if (t[i] == '?')
      q[27].push(i + 1);
    else {
      a = t[i] - 'a' + 1;
      if (!q[a].empty()) {
        aa[m][0] = q[a].front();
        q[a].pop();
        aa[m++][1] = i + 1;
      } else if (!q[0].empty()) {
        aa[m][0] = q[0].front();
        aa[m++][1] = i + 1;
        q[0].pop();
      }
    }
  }
  for (int i = 0; i <= 26; i++) {
    if (q[27].empty())
      break;
    else if (!q[i].empty()) {
      while (!q[i].empty() && !q[27].empty()) {
        aa[m][0] = q[i].front();
        q[i].pop();
        aa[m++][1] = q[27].front();
        q[27].pop();
      }
    }
  }
  printf("%d\n", m);
  for (int i = 0; i < m; i++) printf("%d %d\n", aa[i][0], aa[i][1]);
  return 0;
}
