class Solution {
public:
    
    int LCS(string s1string s2) {
        if(s1.length()==0||s2.length()==0return 0;
        int m=s1.length();
        int n=s2.length();
        vector<intv(m,0);
        vector<vector<int>> dp(n,v);
        dp[0][0]=s1[0]==s2[0]?1:0;
        for(int j=1;j<m;j++){
            dp[0][j]=(s2[j]==s1[0])?1:dp[0][j-1];
        }
        for(int i=1;i<n;i++){
            dp[i][0]=(s1[i]==s2[0])?1:dp[i-1][0];
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                int p1=(s2[j]==s1[i])?1+dp[i-1][j-1]:0;
                int p2=dp[i][j-1];
                int p3=dp[i-1][j];
                dp[i][j]=max(max(p1,p2),p3);
            }
        }
        return dp[n-1][m-1];
    }
};