#include <bits/stdc++.h>
using namespace std;
const long long maxx = 1e6 + 7;
const long long maxn = 5000 + 7;
const long long mod = 998244853;
const long long maxs = 5 * (1E5) + 7;
const long long maxm = 4e5 + 7;
const long long maxk = 1008 + 7;
const long long maxw = 100 + 7;
const long long maxh = 100 + 7;
const double pi = 3.1415926;
const long long ten = 10;
const int ooi = 1234567;
const long long ool = 1e18 + 7;
const long double eps = 1e-8;
const int apsz = 26;
vector<int> can[2][2];
int a[maxn];
int c[maxn];
int n;
void init() {
  cin >> n;
  for (long long i = (0); i < (n); i++) {
    char ch;
    cin >> ch;
    c[i] = ch - '0';
  }
  for (long long i = (0); i < (n); i++) {
    char ch;
    cin >> ch;
    a[i] = ch - '0';
  }
  for (long long i = (0); i < (n); i++) {
    if (a[i] == 1 && c[i] == 1) can[1][1].push_back(i);
    if (c[i] == 1 && a[i] == 0) can[1][0].push_back(i);
    if (c[i] == 0 && a[i] == 0) can[0][0].push_back(i);
    if (c[i] == 0 && a[i] == 1) can[0][1].push_back(i);
  }
}
void solve() {
  int nn = can[0][0].size();
  int nc = can[1][0].size();
  int na = can[0][1].size();
  int nb = can[1][1].size();
  int ans = -1;
  int a, b, c, d;
  for (b = 0; b <= nc; b++) {
    for (c = 0; c <= na; c++) {
      if ((nb + na - c - b) % 2) continue;
      d = (nb + na - c - b) / 2;
      a = n / 2 - b - c - d;
      if (a <= nn && d <= nb && a >= 0 && d >= 0) {
        ans = 1;
        goto ED;
      }
    }
  }
ED:
  if (ans == -1) {
    cout << ans << endl;
    return;
  }
  vector<int> ta;
  for (long long i = (0); i < (a); i++) ta.push_back(can[0][0][i]);
  for (long long i = (0); i < (b); i++) ta.push_back(can[1][0][i]);
  for (long long i = (0); i < (c); i++) ta.push_back(can[0][1][i]);
  for (long long i = (0); i < (d); i++) ta.push_back(can[1][1][i]);
  for (long long i = (0); i < (n / 2); i++) {
    if (i) cout << " ";
    cout << ta[i] + 1;
  }
  cout << endl;
}
int main(void) {
  ios::sync_with_stdio(false);
  cout.tie(0);
  cin.tie(0);
  init();
  solve();
  return 0;
}
