#include <bits/stdc++.h>
using namespace std;
string s1,s2,s3;
int m[105][105][105];
int cnt(int a,int b,int c){
if(a<0||b<0||c<0)return 0;
if(m[a][b][c]!=-1)return m[a][b][c];
if(s1[a]==s2[b]&&s2[b]==s3[c]){
m[a][b][c]=cnt(a-1,b-1,c-1)+1;
}else{
m[a][b][c]=max({cnt(a-1,b,c),cnt(a,b-1,c),cnt(a,b,c-1)});
}
return m[a][b][c];
}
int main(){
cin>>s1>>s2>>s3;
memset(m,-1,sizeof(m));
cout<<cnt(s1.size()-1,s2.size()-1,s3.size()-1)<<endl;
return 0;
}