#include <bits/stdc++.h>
using namespace std;
vector<int> results;
int main() {
  int n;
  string clo, acro;
  cin >> n;
  cin >> clo >> acro;
  if ((clo == "10" && acro == "10") || (clo == "01" && acro == "01")) {
    cout << -1;
  } else {
    int x, cnt, sclo = 0, sacro = 0;
    for (int i = 0; i < n; i++) {
      if (clo[i] == '1') sclo += 1;
      if (acro[i] == '1') sacro += 1;
      ;
    }
    int a = 0, b = 0, c = 0, d = 0;
    for (int i = 0; i < n; i++) {
      if (clo[i] == '0' && acro[i] == '0') a++;
      if (clo[i] == '0' && acro[i] == '1') b++;
      if (clo[i] == '1' && acro[i] == '0') c++;
      if (clo[i] == '1' && acro[i] == '1') d++;
    }
    int aux;
    char sa;
    if (b != c) {
      aux = max(b, c);
    }
    if (b != c) {
      if (b == aux) {
        b = c;
        c = aux;
        sa = 'c';
      } else if (b != aux) {
        sa = 'b';
      }
    }
    if (c - b - d > a) {
      cout << -1;
    } else {
      if (b != c) {
        x = a - c + b + d;
        cnt = 0;
        for (int i = 0; i < n; i++) {
          if (sa == 'b') {
            if (clo[i] == '0' && acro[i] == '1') results.push_back(i + 1);
          }
          if (sa == 'c') {
            if (clo[i] == '1' && acro[i] == '0') results.push_back(i + 1);
          }
        }
        if (b + d <= c) {
          for (int i = 0; i < n; i++) {
            if (clo[i] == '1' && acro[i] == '1') results.push_back(i + 1);
          }
          int g = c - b - d;
          c = g;
          a = (a - g) / 2;
          cnt = 0;
          for (int i = 0; i < n; i++) {
            if (clo[i] == '0' && acro[i] == '0') {
              if (cnt == a) break;
              results.push_back(i + 1);
              cnt++;
            }
          }
          cnt = 0;
          for (int i = 0; i < n; i++) {
            if (sa == 'b') {
              if (clo[i] == '1' && acro[i] == '0') {
                if (cnt == c) break;
                results.push_back(i + 1);
                cnt++;
              }
            }
            if (sa == 'c') {
              if (clo[i] == '0' && acro[i] == '1') {
                if (cnt == c) break;
                results.push_back(i + 1);
                cnt++;
              }
            }
          }
        } else {
          int y = b + d - c;
          if (y % 2 == 0) {
            d -= y / 2;
            cnt = 0;
            for (int i = 0; i < n; i++) {
              if (clo[i] == '1' && acro[i] == '1') {
                if (cnt == d) break;
                cnt++;
                results.push_back(i + 1);
              }
            }
            cnt = 0;
            for (int i = 0; i < n; i++) {
              if (clo[i] == '0' && acro[i] == '0') {
                if (cnt == a / 2) break;
                cnt++;
                results.push_back(i + 1);
              }
            }
          } else {
            y = (y + 1) / 2;
            d -= y;
            for (int i = 0; i < n; i++) {
              if (sa == 'c') {
                if (clo[i] == '0' && acro[i] == '1') {
                  results.push_back(i + 1);
                  break;
                }
              }
              if (sa == 'b') {
                if (clo[i] == '1' && acro[i] == '0') {
                  results.push_back(i + 1);
                  break;
                }
              }
            }
            cnt = 0;
            for (int i = 0; i < n; i++) {
              if (clo[i] == '1' && acro[i] == '1') {
                if (cnt == d) break;
                cnt++;
                results.push_back(i + 1);
              }
            }
            cnt = 0;
            for (int i = 0; i < n; i++) {
              if (clo[i] == '0' && acro[i] == '0') {
                if (cnt == a / 2) break;
                cnt++;
                results.push_back(i + 1);
              }
            }
          }
        }
      } else {
        if (a % 2 != 0) {
          for (int i = 0; i < n; i++) {
            if (clo[i] == '0' && acro[i] == '1') results.push_back(i + 1);
          }
          for (int i = 0; i < n; i++) {
            if (clo[i] == '1' && acro[i] == '0') {
              results.push_back(i + 1);
              break;
            }
          }
          cnt = 0;
          d = d / 2;
          for (int i = 0; i < n; i++) {
            if (clo[i] == '1' && acro[i] == '1') {
              if (cnt == d) break;
              results.push_back(i + 1);
              cnt++;
            }
          }
          cnt = 0;
          a = a / 2;
          for (int i = 0; i < n; i++) {
            if (clo[i] == '0' && acro[i] == '0') {
              if (cnt == a) break;
              results.push_back(i + 1);
              cnt++;
            }
          }
        } else {
          for (int i = 0; i < n; i++) {
            if (clo[i] == '0' && acro[i] == '1') results.push_back(i + 1);
          }
          cnt = 0;
          for (int i = 0; i < n; i++) {
            if (clo[i] == '1' && acro[i] == '1') {
              if (cnt == d / 2) break;
              results.push_back(i + 1);
              cnt++;
            }
          }
          cnt = 0;
          for (int i = 0; i < n; i++) {
            if (clo[i] == '0' && acro[i] == '0') {
              if (cnt == a / 2) break;
              results.push_back(i + 1);
              cnt++;
            }
          }
        }
      }
      int us = 0;
      int ls = 0;
      for (int i = 0; i < n / 2; i++) {
        if (clo[results[i] - 1] == '1') us += 1;
        if (acro[results[i] - 1] == '1') ls += 1;
      }
      if (us == sacro - ls) {
        for (int i = 0; i < n / 2; i++) {
          cout << results[i] << " ";
        }
      } else if (ls == sclo - us) {
        for (int i = 1; i <= n; i++) {
          bool flag = false;
          for (int j = 0; j < n / 2; j++) {
            if (i == results[j]) flag = true;
          }
          if (flag == false) cout << i << " ";
        }
      }
    }
  }
  return 0;
}
