#include <bits/stdc++.h>
using namespace std;
const int N =6000,INF=2e9;
char s1[N],s2[N],s3[N];
bool st[4][N];
int ans=INF;
int main()
{
cin>>s1>>s2>>s3;
memset(st,true,sizeof st);
int t=strlen(s1);
for(int i=0;i<t;i++)
for(int j=0;j<t;j++)
if(s1[j]==s2[(i+j)%t])
{
st[2][i]=false;
break;
}
for(int i=0;i<t;i++)
for(int j=0;j<t;j++)
if(s1[j]==s3[(i+j)%t])
{
st[3][i]=false;
break;
}
for(int i=0;i<t;i++)
for(int j=0;j<t;j++)
if(s2[j]==s3[(i+j)%t])
{
st[1][i]=false;
break;
}
for(int i=0;i<t;i++)
for(int j=0;j<t;j++)
if(st[1][(j+t-i)%t]&&st[2][i]&&st[3][j])
{
ans=min(ans,min(i,t-i)+min(j,t-j));
ans=min(ans,max(i,j));
ans=min(ans,max(t-i,t-j));
}
if(ans>=INF) puts("-1");
else cout<<ans<<endl;
return 0;
}