#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long llinf = 0x3f3f3f3f3f3f3f3f;
template <typename INint>
inline void IN(INint &x) {
  x = 0;
  int f = 1;
  char c;
  cin.get(c);
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    cin.get(c);
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    cin.get(c);
  }
  x *= f;
}
template <typename INint>
inline void OUT(INint x) {
  if (x > 9) OUT(x / 10);
  cout.put(x % 10 + '0');
}
int ran(int a, int b) {
  static int cas(0);
  if (cas++ == 0) srand(int(time(0)));
  return rand() % (b - a + 1) + a;
}
const int maxn = int(5e3 + 4);
int cnt[4] = {0};
bool a[maxn], c[maxn];
vector<int> v[4];
int ans[maxn];
void deal(int x, int y) {
  int t1 = *(v[x].end() - 1);
  v[x].pop_back();
  int t2 = *(v[y].end() - 1);
  v[y].pop_back();
  if (((x & 2) && 1) == ((y & 1) && 1))
    ans[t1] = 1, ans[t2] = 2;
  else
    ans[t2] = 1, ans[t1] = 2;
}
void port() {
  return;
  cout << "Port:  ";
  for (int i = 0; i < int(4); i++) cout << v[i].size() % 10 << ' ';
  cout << endl;
}
bool solve(int n) {
  port();
  if (v[0].size() & 1) {
    if (v[1].size() || v[2].size()) {
      int us = (v[1].size() >= v[2].size() ? 1 : 2);
      deal(us, 0);
      if (v[0].size() & 1) n = n;
    } else
      return 0;
  }
  if (v[3].size() & 1) {
    if (v[1].size() || v[2].size()) {
      int us = (v[1].size() >= v[2].size() ? 1 : 2);
      deal(us, 3);
      if (v[3].size() & 1) n = n;
    } else
      return 0;
  }
  port();
  int n1 = v[1].size(), n2 = v[2].size();
  int sel = min(v[1].size(), v[2].size());
  for (int i = 1; i <= int(sel); i++) deal(1, 2);
  int nsum = v[1].size() + v[2].size();
  port();
  if (nsum & 1) nsum = nsum;
  for (int i = 1; i <= 2; ++i)
    if (v[i].size()) {
      while (v[i].size()) {
        int j;
        for (j = 0; j <= 3; j += 3) {
          if (v[j].size()) {
            deal(i, j);
            break;
          }
        }
        if (j == 6) return 0;
      }
    }
  for (int j = 0; j <= 3; j += 3) {
    while (v[j].size()) {
      deal(j, j);
    }
  }
  return 1;
}
int main() {
  int T(1), times(0);
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  while (++times, T--) {
    int n;
    cin >> n;
    char ch;
    for (int i = 1; i <= int(n); i++) cin >> ch, c[i] = (ch == '1');
    for (int i = 1; i <= int(n); i++) cin >> ch, a[i] = (ch == '1');
    for (int i = 1; i <= int(n); i++) ++cnt[c[i] * 2 + a[i]];
    for (int i = 1; i <= int(n); i++) v[c[i] * 2 + a[i]].push_back(i);
    port();
    if (!solve(n))
      cout << -1 << endl;
    else {
      int t(0);
      for (int i = 1; i <= int(n); i++) {
        if (ans[i] == 1) {
          if (t++) cout << ' ';
          cout << i;
        }
      }
    }
  }
  return 0;
}
