#include <bits/stdc++.h>

using namespace std;
char A[30100],B[30010];
int n,aa[30010],bb[30010],tmp[30010];
int lef[30010],rig[30010],Ans;
inline bool cmp0(const int a,const int b)
{
	return lef[a]<lef[b];
}
inline bool cmp1(const int a,const int b)
{
	return rig[a]<rig[b];
}
int main()
{
	scanf("%s%s",A,B); n=strlen(A); 
	Ans=0x3fffffff;
	for(int i=0;i<n;i++) aa[i+1]=A[i]-'0';
	for(int i=0;i<n;i++) bb[i+1]=B[i]-'0';
	for(int i=1;i<=n;i++) bb[i+n]=bb[i+n+n]=bb[i];
	for(int i=1;i<=n;i++)
	{
		lef[i]=rig[i]=-1;
		for(int j=0;j<n;j++) if(bb[i+j]==1)
		{
			rig[i]=j; break;
		}
		for(int j=0;j<n;j++) if(bb[i+n-j]==1)
		{
			lef[i]=j; break;
		}
	}
	for(int i=0;i<n;i++)
	{
		int mxr=i; tmp[0]=0;
		for(int j=1;j<=n;j++)
		{
			if(aa[j]==bb[j+i]) continue;
			if(rig[j]==-1&&lef[j]==-1)
			{
				printf("-1\n"); return 0;
			}
			tmp[++tmp[0]]=j;
		}
		sort(tmp+1,tmp+1+tmp[0],cmp0); if(!tmp[0]) Ans=min(Ans,i); 
		for(int j=tmp[0];j>=1;j--)
		{
			Ans=min(Ans,(mxr-i)*2+i+lef[tmp[j]]*2+tmp[0]);
			mxr=max(mxr,rig[tmp[j]]);
		}
		Ans=min(Ans,(mxr-i)*2+i+tmp[0]);
		//cout << Ans << endl;
	}
	for(int i=0;i<n;i++)
	{
		int mxl=i; tmp[0]=0;
		for(int j=1;j<=n;j++)
		{
			if(aa[j]==bb[j+n-i]) continue;
			tmp[++tmp[0]]=j;
			if(rig[j]==-1&&lef[j]==-1)
			{
				printf("-1\n"); return 0;
			}
		}
		sort(tmp+1,tmp+1+tmp[0],cmp1); if(!tmp[0]) Ans=min(Ans,i);
		for(int j=tmp[0];j>=1;j--)
		{
			Ans=min(Ans,(mxl-i)*2+i+rig[tmp[j]]*2+tmp[0]);
			mxl=max(mxl,lef[tmp[j]]);
		}
		Ans=min(Ans,(mxl-i)*2+i+tmp[0]);
	}
	cout << Ans << endl;
	return 0;
}