classSolution{public:intminDistance(stringword1,stringword2){constintk=lcs(word1,word2);return(word1.length()-k)+(word2.length()-k);}private:intlcs(conststring&A,conststring&B){constintm=A.length();constintn=B.length();// dp[i][j] := LCS's length of A[0..i) and B[0..j)vector<vector<int>>dp(m+1,vector<int>(n+1));for(inti=1;i<=m;++i)for(intj=1;j<=n;++j)if(A[i-1]==B[j-1])dp[i][j]=1+dp[i-1][j-1];elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);returndp[m][n];}};
classSolution{publicintminDistance(Stringword1,Stringword2){finalintk=lcs(word1,word2);return(word1.length()-k)+(word2.length()-k);}privateintlcs(finalStringA,finalStringB){finalintm=A.length();finalintn=B.length();// dp[i][j] := LCS's length of A[0..i) and B[0..j)int[][]dp=newint[m+1][n+1];for(inti=1;i<=m;++i)for(intj=1;j<=n;++j)if(A.charAt(i-1)==B.charAt(j-1))dp[i][j]=1+dp[i-1][j-1];elsedp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);returndp[m][n];}}