import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            edit(in.nextLine(), in.nextLine());
        }
    }

    //编辑操作包括:删除、插入、替换
    private static void edit(String a, String b) {
        //dp数组的索引对应字符串的长度
        int[][] dp = new int[a.length()+1][b.length()+1];
        //首行首列的编辑距离即为字符的长度
        for(int i=1; i<=a.length(); i++) {
            dp[i][0] = i;
        }
        for(int i=1; i<=b.length(); i++) {
            dp[0][i] = i;
        }
        /**
            对于dp[i][j]的值:
            字符相同时:编辑距离一定等于dp[i-1][j-1]
            字符不同时:
                要么替换(dp[i-1][j-1] + 1)
                要么删除a的(dp[i-1][j] + 1)
                要么删除b的(dp[i][j-1] + 1)
         */
        for(int i=1; i<=a.length(); i++) {
            for(int j=1; j<=b.length(); j++) {
                if(a.charAt(i-1)==b.charAt(j-1)) {
                    dp[i][j] = dp[i-1][j-1];
                } else {
                    dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1;
                }
            }
        }
        System.out.println(dp[a.length()][b.length()]);
    }
}