#include <iostream>
using namespace std;
int**DP;
int editDistance(string S1,string S2,int n,int m)
{
//cout<<"n="<<n<<" m="<<m<<endl;
if(m==0)
{
return n;
}
if(n==0)
{
return m;
}
if(DP[n][m] != -1)
{
return DP[n][m];
}
if(S1[n-1] == S2[m-1])
{
DP[n][m] = editDistance(S1,S2,n-1,m-1);
return DP[n][m];
}
DP[n][m] = 1+min(editDistance(S1,S2,n-1,m),min(editDistance(S1,S2,n-1,m-1),editDistance(S1,S2,n,m-1)));
return DP[n][m];
}
int main() {
string S1;
string S2;
cin>>S1>>S2;
int n = S1.length();
int m = S2.length();
DP = new int*[n+1];
for(int i=0;i<=n;i++)
{
DP[i] = new int[m+1];
for(int j=0;j<=m;j++)
{
DP[i][j]=-1;
}
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
if(i==0)
{
DP[i][j]=j;
}
else if(j==0)
{
DP[i][j]=i;
}
else if(S1[i-1] == S2[j-1])
{
DP[i][j] = DP[i-1][j-1];
}
else
{
DP[i][j] = 1+min(DP[i-1][j],min(DP[i-1][j-1],DP[i][j-1]));
}
}
}
cout<<DP[n][m]<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50KipEUDsKaW50IGVkaXREaXN0YW5jZShzdHJpbmcgUzEsc3RyaW5nIFMyLGludCBuLGludCBtKQp7CgkvL2NvdXQ8PCJuPSI8PG48PCIgbT0iPDxtPDxlbmRsOwoJCglpZihtPT0wKQoJewoJCXJldHVybiBuOwoJfQoJCglpZihuPT0wKQoJewoJCXJldHVybiBtOwoJfQoJCglpZihEUFtuXVttXSAhPSAtMSkKCXsKCQlyZXR1cm4gRFBbbl1bbV07Cgl9CgkKCWlmKFMxW24tMV0gPT0gUzJbbS0xXSkKCXsKCQlEUFtuXVttXSA9IGVkaXREaXN0YW5jZShTMSxTMixuLTEsbS0xKTsKCQlyZXR1cm4gRFBbbl1bbV07Cgl9CgkKCQoJRFBbbl1bbV0gPSAxK21pbihlZGl0RGlzdGFuY2UoUzEsUzIsbi0xLG0pLG1pbihlZGl0RGlzdGFuY2UoUzEsUzIsbi0xLG0tMSksZWRpdERpc3RhbmNlKFMxLFMyLG4sbS0xKSkpOwoJcmV0dXJuIERQW25dW21dOwp9CgoKaW50IG1haW4oKSB7CgkKCXN0cmluZyBTMTsKCXN0cmluZyBTMjsKCQoJY2luPj5TMT4+UzI7CgkKCWludCBuID0gUzEubGVuZ3RoKCk7CglpbnQgbSA9IFMyLmxlbmd0aCgpOwoJCglEUCA9IG5ldyBpbnQqW24rMV07Cglmb3IoaW50IGk9MDtpPD1uO2krKykKCXsKCQlEUFtpXSA9IG5ldyBpbnRbbSsxXTsKCQlmb3IoaW50IGo9MDtqPD1tO2orKykKCQl7CgkJCURQW2ldW2pdPS0xOwoJCX0KCX0KCQoJZm9yKGludCBpPTA7aTw9bjtpKyspCgl7CgkJZm9yKGludCBqPTA7ajw9bTtqKyspCgkJewoJCQlpZihpPT0wKQoJCQl7CgkJCQlEUFtpXVtqXT1qOwoJCQl9CgkJCWVsc2UgaWYoaj09MCkKCQkJewoJCQkJRFBbaV1bal09aTsKCQkJfQoJCQllbHNlIGlmKFMxW2ktMV0gPT0gUzJbai0xXSkKCQkJewoJCQkJRFBbaV1bal0gPSBEUFtpLTFdW2otMV07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlEUFtpXVtqXSA9IDErbWluKERQW2ktMV1bal0sbWluKERQW2ktMV1bai0xXSxEUFtpXVtqLTFdKSk7CgkJCX0KCQl9Cgl9CgkKCWNvdXQ8PERQW25dW21dPDxlbmRsOwoJCgkKCXJldHVybiAwOwp9