#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 100;
struct node {
  int c, a;
} e[maxn];
int n;
int a = 0, b = 0, c = 0, d = 0;
vector<int> ans;
bool check(int x, int y, int z, int m) {
  if (x < 0 || x > a) return 0;
  if (y < 0 || y > b) return 0;
  if (z < 0 || z > c) return 0;
  if (m < 0 || m > d) return 0;
  if (y + m != c - z + d - m) return 0;
  if (x + y + z + m != n / 2) return 0;
  return 1;
}
void slove(int x, int y, int z, int m) {
  for (int i = 1; i <= n; i++) {
    if (x && e[i].c == 0 && e[i].a == 0) {
      ans.push_back(i);
      x--;
    } else if (y && e[i].c == 1 && e[i].a == 0) {
      ans.push_back(i);
      y--;
    } else if (z && e[i].c == 0 && e[i].a == 1) {
      ans.push_back(i);
      z--;
    } else if (m && e[i].c == 1 && e[i].a == 1) {
      ans.push_back(i);
      m--;
    }
  }
  int flag = 0;
  for (int i = 0; i < n / 2; i++) {
    if (flag) printf(" ");
    flag = 1;
    printf("%d", ans[i]);
  }
  printf("\n");
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%1d", &e[i].c);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%1d", &e[i].a);
    if (e[i].c == 0 && e[i].a == 0)
      a++;
    else if (e[i].c == 1 && e[i].a == 0)
      b++;
    else if (e[i].c == 0 && e[i].a == 1)
      c++;
    else
      d++;
  }
  int x, y, z, m, to;
  for (int i = 0; i <= d; i++) {
    m = i;
    x = (a + b - c - d + 2 * i) / 2;
    if (x >= 0 && x <= a) {
      to = n / 2 - x - m;
      for (int j = 0; j <= min(to, b); j++) {
        y = j;
        z = to - j;
        if (z >= 0 && z <= c) {
          if (check(x, y, z, m)) {
            slove(x, y, z, m);
            return 0;
          }
        }
      }
    }
  }
  printf("-1\n");
  return 0;
}
