#include<bits/stdc++.h>
using namespace std;
string s1,s2,s3;
string a[10];
int nxt[10][1000100];
int maxn=10000001,tot,ans[10];
int main()
{
cin>>s1>>s2>>s3;
a[1]=' '+s1+s2;
a[2]=' '+s2+s1;
a[3]=' '+s2+s3;
a[4]=' '+s3+s2;
a[5]=' '+s1+s3;
a[6]=' '+s3+s1;
for(int i=1;i<=6;i+=2)
{
int k=0;
for(int j=2;a[i][j];j++)
{
while(k!=0 && a[i][j] != a[i][k+1]) k=nxt[i][k];
if(a[i][j] == a[i][k+1]) k++;
nxt[i][j] = k;
}
k=0;
for(int j=2;a[i+1][j];j++)
{
while(k!=0 && a[i+1][j] != a[i+1][k+1]) k=nxt[i+1][k];
if(a[i+1][j] == a[i+1][k+1]) k++;
nxt[i+1][j] = k;
}
// maxn[++tot]=max(nxt[i+1][a[i+1].size() -1],nxt[i][a[i].size()-1]);cout<<"ASD"<<endl;
}
int n=s1.size()+s2.size()+s3.size();
ans[1]=n-nxt[1][a[1].size() -1]-nxt[3][a[3].size() -1];
ans[2]=n-nxt[5][a[5].size() -1]-nxt[4][a[4].size() -1];
ans[3]=n-nxt[3][a[3].size() -1]-nxt[6][a[6].size() -1];
ans[4]=n-nxt[2][a[2].size() -1]-nxt[5][a[5].size() -1];
ans[5]=n-nxt[6][a[6].size() -1]-nxt[1][a[1].size() -1];
ans[6]=n-nxt[4][a[4].size() -1]-nxt[2][a[2].size() -1];
for(int i=1;i<=6;i++)
{
maxn=min(maxn,ans[i]);
}
cout<<maxn<<endl;
}
样例过了,但不知道哪错了。。。。