#include<bits/stdc++.h>
#define inf (1<<30)
using namespace std;
typedef long long LL;
int read()
{
    char c=getchar();int f=1,sum=0;
    while(c<'0' || c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0' && c<='9'){sum=sum*10+c-'0';c=getchar();}
    return sum*f;
}
int n,nl[6005],nr[6005],ps[6005],ans=inf,pa[2005];
char A[2005],B[6005];
vector<pair<int,int> > v;
void init()
{
	nl[0]=-inf;for(int i=1;i<=n*3;i++) nl[i]=(B[i]=='1')?i:nl[i-1];
	nr[3*n+1]=inf;for(int i=n*3;i>=1;i--) nr[i]=(B[i]=='1')?i:nr[i+1];
	for(int i=1;i<=n*3;i++) ps[i]=ps[i-1]+(B[i]=='1');
	for(int i=1;i<=n;i++) pa[i]=pa[i-1]+(A[i]=='1');
}
int getl(int x){return x-nl[x];}int getr(int x){return nr[x]-x;}
int main()
{
	scanf("%s%s",A+1,B+1);
	n=strlen(A+1);
	for(int i=n+1;i<=n*3;i++) B[i]=B[(i-1)%n+1];
	init();
	if(pa[n]>0 && ps[n]==0) return puts("-1"),0;
	for(int i=1;i<=2*n+1;i++)
	{
		int tot=0;v.clear();v.push_back(make_pair(0,0));
		for(int j=1;j<=n;j++)
		if(A[j]!=B[j+i-1])
		{
			tot++;
			int l=j+i-1,r=j+n; if(l>r) l^=r^=l^=r;
			if(ps[r]-ps[l-1]==0) v.push_back(make_pair(getl(l),getr(r)));
		}
		sort(v.begin(),v.end());
		int sz=v.size(),maxr=0,sum=inf;
		for(int j=sz-1;j>=0;j--)
		{
			if(v[j].first!=inf && maxr!=inf) sum=min(sum,(v[j].first<<1)+(maxr<<1));
			maxr=max(maxr,v[j].second);if(maxr==inf) break;
		}
		if(sum!=inf) ans=min(ans,sum+tot+abs(n+1-i));
	}
	printf("%d\n",ans);
	return 0;
}
