#include<iostream>
#include<string>
#include<vector>
using namespace std;
int func(string word1, string word2)
{
int n1 = word1.size();
int n2 = word2.size();
int **dp=new int*[n1+1];
for(int i=0;i<n1+1;i++)
dp[i]=new int[n2+1];
for(int j=1;j<n2+1;j++)
dp[0][j] = j;
for(int i=1;i<n1+1;i++)
dp[i][0] = i;
dp[0][0]=0;
for(int i=1;i<n1+1;i++)
{
for(int j=1;j<n2+1;j++)
{
if (word1[i-1] == word2[j-1])
dp[i][j] = dp[i-1][j-1];
else
// 插入dp[i][j-1] ,删除dp[i-1][j] ,替换dp[i-1][j-1]
dp[i][j] = min(min(dp[i][j-1], dp[i-1][j]), dp[i-1][j-1] ) + 1;
}
}
return dp[n1][n2];
}
int main()
{
string str1,str2;
cin>>str1>>str2;
int res=func(str1,str2);
cout<<res<<endl;
return 0;
}