#include <bits/stdc++.h>
using namespace std;
const long long int ll_MAX = 1e18 + 5;
const long long int MOD = 1e9 + 7;
long long int fast_expo(long long int x, long long int p) {
  if (p == 0)
    return 1;
  else if (p % 2 == 0) {
    long long int t = fast_expo(x, p / 2) % MOD;
    return (t * t) % MOD;
  } else
    return (x * (fast_expo(x, p - 1)) % MOD) % MOD;
}
long long int gcd(long long int a, long long int b) {
  if (a == 0 || b == 0)
    return a + b;
  else
    return gcd(b % a, a);
}
bool check(long long int arr[], long long int s, long long int e,
           long long int val, long long int num) {
  long long int cnt = 0;
  for (long long int i = s; i <= e; ++i) {
    if (arr[i] <= val) {
      cnt++;
      i++;
    }
  }
  if (cnt >= num) return true;
  return false;
}
int main() {
  long long int t_c;
  t_c = 1;
  for (long long int t_i = 0; t_i < t_c; ++t_i) {
    long long int n;
    cin >> n;
    string s, t;
    cin >> s >> t;
    long long int cnt = 0;
    for (auto i : s) {
      if (i == '0') cnt++;
    }
    for (auto i : t) {
      if (i == '0') cnt--;
    }
    if (cnt != 0) {
      cout << -1;
      return 0;
    }
    string str;
    for (long long int i = 0; i < n; ++i) {
      if (s[i] != t[i]) {
        str.push_back(s[i]);
      }
    }
    if (str.size() == 0) {
      cout << 0;
      return 0;
    }
    long long int curr0 = 0, curr1 = 0;
    vector<long long int> vect;
    for (auto i : str) {
      if (i == '0') {
        curr0++;
        if (curr1 != 0) vect.push_back(curr1);
        curr1 = 0;
      } else {
        curr1++;
        if (curr0 != 0) vect.push_back(-curr0);
        curr0 = 0;
      }
    }
    if (curr1) vect.push_back(curr1);
    if (curr0) vect.push_back(-curr0);
    if (vect.size() == 0) {
      cout << 0 << "\n";
      return 0;
    }
    long long int ans = 0;
    vector<long long int> vect2;
    while (1) {
      ans++;
      if (vect[vect.size() - 1] * vect[0] < 0) {
        for (long long int i = 0; i < vect.size(); ++i) {
          if (vect[i] > 1) {
            if (vect2.size() > 0 && vect2[vect2.size() - 1] > 0) {
              long long int val = vect2[vect2.size() - 1];
              vect2.pop_back();
              vect2.push_back(val + vect[i] - 1);
            } else
              vect2.push_back(vect[i] - 1);
          } else if (vect[i] < -1) {
            if (vect2.size() > 0 && vect2[vect2.size() - 1] < 0) {
              long long int val = vect2[vect2.size() - 1];
              vect2.pop_back();
              vect2.push_back(val + vect[i] + 1);
            } else
              vect2.push_back(vect[i] + 1);
          }
        }
      } else {
        for (long long int i = 0; i < vect.size() - 1; ++i) {
          if (vect[i] > 1) {
            if (vect2.size() > 0 && vect2[vect2.size() - 1] > 0) {
              long long int val = vect2[vect2.size() - 1];
              vect2.pop_back();
              vect2.push_back(val + vect[i] - 1);
            } else
              vect2.push_back(vect[i] - 1);
          } else if (vect[i] < -1) {
            if (vect2.size() > 0 && vect2[vect2.size() - 1] < 0) {
              long long int val = vect2[vect2.size() - 1];
              vect2.pop_back();
              vect2.push_back(val + vect[i] + 1);
            } else
              vect2.push_back(vect[i] + 1);
          }
        }
        if (vect[vect.size() - 1] > 0) {
          if (vect2.size() > 0 && vect2[vect2.size() - 1] > 0) {
            long long int val = vect2[vect2.size() - 1];
            vect2.pop_back();
            vect2.push_back(val + vect[vect.size() - 1]);
          } else
            vect2.push_back(vect[vect.size() - 1]);
        } else if (vect[vect.size() - 1] < 0) {
          if (vect2.size() > 0 && vect2[vect2.size() - 1] < 0) {
            long long int val = vect2[vect2.size() - 1];
            vect2.pop_back();
            vect2.push_back(val + vect[vect.size() - 1]);
          } else
            vect2.push_back(vect[vect.size() - 1]);
        }
      }
      if (vect2.size() == 0) break;
      vect = vect2;
      vect2.clear();
    }
    cout << ans;
  }
  return 0;
}
