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

inline bool diff(char &a,char &b){
    return a!='?'&&b!='?'&&a!=b;
}

int la,lb,lc,ans=0x3f3f3f3f;
char a[2000],b[2000],c[2000];
bool ab[20000],ac[20000],bc[20000];

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>a;la=strlen(a);
    cin>>b;lb=strlen(b);
    cin>>c;lc=strlen(c);
    memset(ab,1,sizeof(ab));
    memset(ac,1,sizeof(ac));
    memset(bc,1,sizeof(bc));
    for(int i=0;i<la;i++)for(int j=0;j<lb;j++)if(diff(a[i],b[j]))ab[i-j+10000]=0;
    for(int i=0;i<la;i++)for(int j=0;j<lc;j++)if(diff(a[i],c[j]))ac[i-j+10000]=0;
    for(int i=0;i<lb;i++)for(int j=0;j<lc;j++)if(diff(b[i],c[j]))bc[i-j+10000]=0;
    for(int pa=-4000;pa<=4000;pa++){
        for(int pb=-4000;pb<=4000;pb++){
            if(ab[pb-pa+10000]&&ac[-pa+10000]&&bc[-pb+10000]){
                ans=min(ans,max(la+pa,max(lb+pb,lc))-min(0,min(pa,pb)));
            }
        }
    }
    cout<<ans<<endl;

    return 0;
}