#include<iostream>
using namespace std;

int f[1001][1001];    //s1中前i个字符与s2中前j个字符的编辑距离
int Distance(string s1, string s2)
{
    int n = s1.length(),  m = s2.length();
    //初始化f
    for(int i = 0; i < n ;i++)    
        f[i][0] = i;     //要使s1中前i个字符与s2前0个字符相同,只能删除s1前i个
    for(int j = 0; j < m; j++)
        f[0][j] = j;    // 同上,要使s1中前0个字符与s2前j个字符相同,只能s1增加j个
    
    for(int i = 1; i < n ;i++)     //在输入字符串前加了个‘ ’,所以是1~n
        for(int j = 1; j < m; j++)    //同上
        {
            f[i][j] = min(f[i-1][j]+1, f[i][j-1]+1);  //增加or删除
            if(s1[i] != s2[j])
                f[i][j] = min(f[i][j], f[i-1][j-1]+1);  //or替换
            else
                f[i][j] = min(f[i][j], f[i-1][j-1]);
        }
    return f[n-1][m-1];     
}
int main()
{
    string s1,s2;
    cin>>s1; s1 = ' ' + s1;   //小tip,在s前面加一个‘ ’,之后计算编辑距离可以从下标1开始
    cin>>s2; s2 = ' ' + s2;
    cout << Distance(s1, s2);

    return 0;
}