#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef pair<int,int>P;
 
int l[3000],r[3000];
int Max[3000];
 
int main(){
	string a,b;cin>>a>>b;
	if(a==b){
		puts("0");return 0;
	}
	int n=a.size();
	bool ok=false;
	rep(i,n){
		if(b[i]=='1')ok=true;
	}
	if(!ok){
		puts("-1");return 0;
	}
	rep(i,n){
		if(b[i]=='1'){
			l[i]=r[i]=0;
			continue;
		}
		int c=0;
		for(int j=(i+n-1)%n;j!=i;j=(j+n-1)%n){
			c++;
			if(b[j]=='1'){
				l[i]=c;
				break;
			}
		}
		c=0;
		for(int j=(i+1)%n;j!=i;j=(j+1)%n){
			c++;
			if(b[j]=='1'){
				r[i]=c;
				break;
			}
		}
	}
	int ans=INT_MAX;
	rep(i,n){
		vector<P>v;
		int d=0;
		rep(j,n){
			int x=(j+i)%n;
			if(a[x]!=b[j]){
				d++;
				v.push_back(P(l[x],r[x]));
			}
		}
		sort(v.begin(),v.end());
		Max[v.size()]=0;
		for(int j=v.size()-1;j>=0;j--){
			Max[j]=max(Max[j+1],v[j].second);
		}
		int pos=(n-i)%n;
		rep(j,v.size()+1){
			int L=(j?v[j-1].first:0);
			int R=Max[j];
			int pl=(n-L)%n,pr=R%n;
			int cnt=2*L+R+min((pr+n-pos)%n,(pos+n-pr)%n);
			cnt=min(cnt,2*R+L+min((pl+n-pos)%n,(pos+n-pl)%n));
			ans=min(ans,cnt+d);
		}
	}
	cout<<ans<<endl;
}
