#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
void solve() {
  long long n;
  cin >> n;
  string ci, ai;
  cin >> ci >> ai;
  map<long long, vector<long long> > mp;
  for (long long i = 0; i < n; i++) {
    if (ci[i] == '0' && ai[i] == '0')
      mp[0].push_back(i);
    else if (ci[i] == '0' && ai[i] == '1')
      mp[1].push_back(i);
    else if (ci[i] == '1' && ai[i] == '0')
      mp[2].push_back(i);
    else if (ci[i] == '1' && ai[i] == '1')
      mp[3].push_back(i);
  }
  long long aa, bb, b, a, c = 100000, d = 100000;
  for (long long i = 0; i <= mp[2].size(); i++) {
    for (long long j = 0; j <= mp[3].size(); j++) {
      bb = mp[1].size() + mp[3].size() - i - 2 * j;
      aa = n / 2 - bb - i - j;
      if (bb >= 0 && bb <= mp[1].size() && aa >= 0 && aa <= mp[0].size()) {
        c = i;
        d = j;
        a = aa;
        b = bb;
      }
    }
  }
  if (c == 100000) {
    cout << -1;
    return;
  }
  for (long long i = 0; i < a; i++) cout << mp[0][i] + 1 << " ";
  for (long long i = 0; i < b; i++) cout << mp[1][i] + 1 << " ";
  for (long long i = 0; i < c; i++) cout << mp[2][i] + 1 << " ";
  for (long long i = 0; i < d; i++) cout << mp[3][i] + 1 << " ";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  while (t--) {
    solve();
    cout << endl;
  }
}
