import java.util.Scanner;

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	}

	// 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	}

	// 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	}
} Main public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	} main {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String S = sc.nextLine(); S sc.nextLine() sc.nextLine sc String T = sc.nextLine(); T sc.nextLine() sc.nextLine sc sc.close() sc.close sc int ansm = T.length(); ansm T.length() T.length T for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		} int i = 0; int i = 0; i 0 i <= S.length() - T.length() i S.length() - T.length() S.length() S.length S T.length() T.length T i++ i++ i {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		} {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		} String cs = S.substring(i); cs S.substring(i) S.substring S i int diff = 0; diff 0 for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			} int j = 0; int j = 0; j 0 j < T.length() j T.length() T.length T j++ j++ j {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			} {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			} if(!checkStr(cs, T, j)) {
					diff += 1;
				} !checkStr(cs, T, j) checkStr(cs, T, j) checkStr cs T j {
					diff += 1;
				} diff += 1 diff 1 if(diff < ansm) ansm = diff; // 最小値更新 diff < ansm diff ansm ansm = diff ansm diff System.out.println(ansm) System.out.println System.out System System.out ansm String[] args args // 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	} checkStr {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	} char cX = X.charAt(c); cX X.charAt(c) X.charAt X c char cY = Y.charAt(c); cY Y.charAt(c) Y.charAt Y c return cX == cY; cX == cY cX cY String X X String Y Y int c c public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	}

	// 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	}
} public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	}

	// 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	}
} Main
import java.util.Scanner;

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine(); // String Sを受け取る
		String T = sc.nextLine(); // String Tを受け取る
		sc.close(); // 標準入力を終了

		int ansm = T.length(); // Sを書き換える文字数の最小値

		//Sの何文字目から調べるかを全探索する
		for(int i = 0; i <= S.length() - T.length(); i++) {
			String cs = S.substring(i);
			int diff = 0; // SとTで一致しない文字数
			for(int j = 0; j < T.length(); j++) {
				if(!checkStr(cs, T, j)) {
					diff += 1;
				}
			}
			if(diff < ansm) ansm = diff; // 最小値更新
		}
		System.out.println(ansm);

	}

	// 文字列Xと文字列Yを比較し、指定したインデックスの文字が等しいか求める関数
	public static boolean checkStr(String X, String Y, int c) {
		char cX = X.charAt(c);
		char cY = Y.charAt(c);
		return cX == cY;
	}
}