#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cinttypes>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<stack>


#define FSCNd64 "%" SCNd64
#define FPRId64 "%" PRId64

using namespace std;

using ll=long long;
using vi=vector<int>;
using vvi=vector<vi>;
using pii=pair<int,int>;
using vll=vector<ll>;
using vvll=vector<vll>;
using vpii=vector<pii>;

#define PI 3.1415926535897932384626433832795

template<typename X>
bool max_u(X&m, X v)
{
	if(m<v)
	{
		m=v;
		return true;
	}
	return false;
}


template<typename X>
bool min_u(X&m, X v)
{
	if(m>v)
	{
		m=v;
		return true;
	}
	return false;
}


bool next1(string&s, int&i)
{
	int l=s.length();
	if(i>=l) return false;

	for(i++;i<l;i++)
	{
		if(s[i]=='1')
		{
			return true;
		}
	}
	return false;
}


struct solve
{
	solve(){}
	ll operator()(int n, string s, string t) {
		ll ans=0;
		int si=-1, ti=-1;

		for(int k=0;;k++)
		{
			if(si>=n && ti>=n)
			{
				return ans;
			}

//cout << si << " " << ti << "\n";
			if(si<ti)
			{
				int psi=si;
				if(!next1(s, si)) break;
				ans+=si-psi;
				next1(s, si);
			}
			else
			{
				if(si>=n) break;
				ans+=si-ti;
				next1(s, si);
				next1(t, ti);
			}
		}
		return -1;
	}
};

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	for(;;)
	{
		int n;
		cin >> n;
		if(cin.fail()) break;
		string  s, t;
		cin >> s >> t;

		cout << solve()(n, s, t) << "\n";
	}
	return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int main(void){
    int n;
    long long ans = 0;
    string s, t;
    cin >> n >> s >> t;

    set< int > st;
    for(int i=0;i<n;i++) if(s[i] == '1') st.insert(i);

    for(int i=0;i<n;i++){
        if(s[i] == t[i]) continue;

        if(st.empty()){
            puts("-1");
            return 0;
        }

        auto itr = st.begin();
        int j = *itr;
        st.erase(itr);
        while(j <= i){
            if(st.empty()){
                puts("-1");
                return 0;
            }
            itr = st.begin();
            j = *itr;
            st.erase(itr);
        }
        s[j] = '0';
        ans += j-i;
    }
    cout << ans << endl;
}
