#include<bits/stdc++.h>
using namespace std;
char s[500005],t[500005];
int f[500005][2],v[500005];
int main()
{
    int n,cnt=0;
    long long ans=0;
    scanf("%d",&n);
    scanf("%s\n%s",s+1,t+1);
    for(int i=1;i<=n;i++)if(s[i]=='1')v[++cnt]=i;
    long long now=1;
    for(int i=1;i<=n;i++)
    {
        while(now<=cnt&&v[now]<i)
        {
            if(now==cnt){puts("-1");return 0;}
            ans+=v[now+1]-v[now];
            now+=2;
        }
        if(t[i]=='0')
        {
            while(now<=cnt&&v[now]<=i)
            {
                if(now==cnt){puts("-1");return 0;}
                ans+=v[now+1]-v[now];
                now+=2;
            }
        }
        else
        {
            if(now>cnt){puts("-1");return 0;}
            else ans+=v[now]-i,now++;
        }
    }
    printf("%lld",ans);
    return 0;
}

#include <iostream>
#include <climits>
#include <vector>

using namespace std;

int main()
{
  int n;  
  string s, t;
  cin >> n;
  cin >> s;
  cin >> t;

  // 偶奇が同じか判別する
  int sSum = 0, tSum = 0;
  for (int i = 0; i < n; i++) {
    if (s[i] == '1') sSum++;
    if (t[i] == '1') tSum++;
  }
  if ((sSum - tSum) % 2 == 1 || sSum < tSum) {
    cout << -1;
    return 0;
  }
  long ans = 0;
  int sNow = 0, tNow = 0;
  int sBefore = -1;
  while (tNow < n) {
    // tの最初を探す
    if (t[tNow] == '0') {
      tNow++;
      continue;
    }
    else {
      // 相方になり得るsを探す
      while (sNow < n && s[sNow] == '0')
        sNow++;
      if (sNow == n) {
        cout << -1;
        return 0;
      }
      if (sNow >= tNow && sBefore == -1) {
        // 相方として決定
        ans += sNow - tNow;
        sNow++;
        tNow++;
      }
      else {
        // 相殺するものとする
        if (sBefore == -1) {
          sBefore = sNow;
          sNow++;
        }
        else {
          ans += sNow - sBefore;
          sBefore = -1;
          sNow++;
        }
      }
    }
  }
  while (sNow < n) {
    if(s[sNow] == '0')
    {
      sNow++;      
    }
    else {
      // 相殺
      if (sBefore == -1) {
        sBefore = sNow;
        sNow++;
      }
      else {
        ans += sNow - sBefore;
        sBefore = -1;
        sNow++;
      }
    }
  }
  cout << ans;
  return 0;
}