#55426: c++ lcs


61247091s@gapps.ntnu.edu.tw (wei)


#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;
}