#include <bits/stdc++.h>
const long long Inf = 1e18;
long long LINF = (long long)2e18;
using namespace std;
long long mod = 1e9 + 7;
long long mod3 = 998244353;
long long mod2 = 1e9 + 123;
vector<int> prefix_function(string s) {
  int n = (int)s.length();
  vector<int> pi(n);
  for (int i = 1; i < n; ++i) {
    int j = pi[i - 1];
    while (j > 0 && s[i] != s[j]) j = pi[j - 1];
    if (s[i] == s[j]) ++j;
    pi[i] = j;
  }
  return pi;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.setf(ios::fixed);
  cout.precision(20);
  int n;
  cin >> n;
  vector<int> v(n, 0);
  string s1, s2;
  int kl = 0, ak = 0, sm = 0;
  cin >> s1 >> s2;
  for (int i = 0; i < n; ++i) {
    if (s1[i] == '1') {
      if (s2[i] == '1') {
        v[i] = 3;
        sm++;
      } else {
        v[i] = 1;
        kl++;
      }
    } else if (s2[i] == '1') {
      if (s1[i] == '1') {
        v[i] = 3;
        sm++;
      } else {
        v[i] = 2;
        ak++;
      }
    }
  }
  if (ak > n / 2 || kl > n / 2) {
    cout << -1;
    return 0;
  }
  vector<int> ans(n, 0);
  int az = 0;
  if (ak + sm <= kl) {
    int raz = n / 2;
    az = min(kl, ak) + sm;
    int pro = az;
    for (int i = 0; i < n; ++i) {
      if (az <= 0) break;
      if (v[i] == 1) {
        ans[i] = 1;
        az--;
        raz--;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (raz <= 0) break;
      if (v[i] == 0) {
        ans[i] = 1;
        raz--;
      }
    }
    int zz = 0;
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 0 && s2[i] == '1') zz++;
    }
    if (zz != pro) {
      cout << -1;
      return 0;
    }
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 1) cout << i + 1 << " ";
    }
  } else if (kl + sm <= ak) {
    int raz = n / 2;
    az = min(kl, ak) + sm;
    int pro = az;
    for (int i = 0; i < n; ++i) {
      if (az <= 0) break;
      if (v[i] == 1) {
        ans[i] = 1;
        az--;
        raz--;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (az <= 0) break;
      if (v[i] == 3) {
        ans[i] = 1;
        az--;
        raz--;
      }
    }
    int kak = ak - kl - sm;
    for (int i = 0; i < n; ++i) {
      if (kak <= 0) break;
      if (v[i] == 2) {
        ans[i] = 1;
        kak--;
        raz--;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (raz <= 0) break;
      if (v[i] == 0) {
        ans[i] = 1;
        raz--;
      }
    }
    int zz = 0;
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 0 && s2[i] == '1') zz++;
    }
    if (zz != pro) {
      cout << -1;
      return 0;
    }
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 1) cout << i + 1 << " ";
    }
  } else {
    int raz = n / 2;
    az = max(kl, ak) + (sm - (max(kl, ak) - min(kl, ak))) / 2;
    int pro = az;
    for (int i = 0; i < n; ++i) {
      if (az <= 0) break;
      if (v[i] == 1) {
        ans[i] = 1;
        az--;
        raz--;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (az <= 0) break;
      if (v[i] == 3) {
        ans[i] = 1;
        az--;
        raz--;
      }
    }
    if ((sm - (max(kl, ak) - min(kl, ak))) % 2 == 1) {
      for (int i = 0; i < n; ++i) {
        if (v[i] == 2) {
          ans[i] = 1;
          raz--;
          break;
        }
      }
    }
    for (int i = 0; i < n; ++i) {
      if (raz <= 0) break;
      if (v[i] == 0) {
        ans[i] = 1;
        raz--;
      }
    }
    int zz = 0;
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 0 && s2[i] == '1') zz++;
    }
    if (zz != pro) {
      cout << -1;
      return 0;
    }
    for (int i = 0; i < n; ++i) {
      if (ans[i] == 1) cout << i + 1 << " ";
    }
  }
  return 0;
}
