#include<bits/stdc++.h>
using namespace std;

int N,Ans=1<<30;
char A[2005],B[2005];
int L[2005],R[2005],Mx[2005];

void Solve(){
	int i,j,mx,cnt;
	for(i=0;i<N;i++){
		for(R[i]=0;B[(i+R[i])%N]=='0';R[i]++);
		for(L[i]=0;B[(i-L[i]+N)%N]=='0';L[i]++);
	}
	for(i=0;i<N;i++){
		memset(Mx,0,sizeof(Mx));
		for(cnt=j=0;j<N;j++)
			if(A[j]!=B[(j+i)%N])
				Mx[L[j]]=max(Mx[L[j]],R[j]),cnt++;
		for(j=N-1,mx=0;~j;j--){
			Ans=min(Ans,2*j+mx+abs(mx-i)+cnt);
			mx=max(mx,Mx[j]);
		}
	}
}

int main(){
	int i,cnta=0,cntb=0;
	scanf("%s%s",A,B);
	N=strlen(A);
	for(i=0;i<N;i++){
		cnta+=(A[i]=='1');
		cntb+=(B[i]=='1');
	}
	if(!cntb){
		printf("%d\n",-(cnta>0));
		return 0;
	}
	Solve();
	reverse(A,A+N);
	reverse(B,B+N);
	Solve();
	printf("%d\n",Ans);
	return 0;
}