//本题参考题解区第一位
//https://www.luogu.org/problemnew/solution/P1279
//dp[i-1][j-1]表示字符串a前i-1位,与字符串b前j-1位的最优解,就是最小距离
//那么当a和b各加上一位后,只把焦点盯在a和b的最后一位所对应的字符
//那么有以下三种情况
//1,a的最后一位对应为空dp[i-1][j]+k
//2,b的最后一位对应为空dp[i][j-1]+k
//3,a和b的最后一位相互对应dp[i-1][j-1]+Math.abs(a.charAt(i-1)-b.charAt(j-1))
//这里要注意的就是,这道题目的空格插入不会影响到a和b字符串的相应位置字符的改变
//然后dp求三者中最小值即可
//注意,dp数组的初始化
//for(int i=1;i<=a.length();i++) {
// dp[i][0]=dp[i-1][0]+k;
//}
//for(int j=1;j<=b.length();j++) {
// dp[0][j]=dp[0][j-1]+k;
//}
//即除dp[0][0]外的第0行和第0列,的最小值就是k乘以k的个数,k的个数就是相应的i值或j值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String a=in.nextLine();
String b=in.nextLine();
int k=in.nextInt();
int [][]dp=new int[a.length()+1][b.length()+1];
for(int i=1;i<=a.length();i++) {
dp[i][0]=dp[i-1][0]+k;
}
for(int j=1;j<=b.length();j++) {
dp[0][j]=dp[0][j-1]+k;
}
for(int i=1;i<=a.length();i++) {
for(int j=1;j<=b.length();j++) {
dp[i][j]=Math.min(Math.min(dp[i-1][j]+k,dp[i][j-1]+k),
dp[i-1][j-1]+Math.abs(a.charAt(i-1)-b.charAt(j-1)));
// 0 2 4 6 8
// 2 4 6 8 10
// 4 6 5 6 8
// 6 8 7 8 10
// 10
// dp[i][j]=Math.min(dp[i-1][j]+k,dp[i-1][j-1]+Math.abs(a.charAt(i-1)-b.charAt(j-1)));
// 此时运行错误
// 0 2 4 6 8
// 2 4 6 8 10
// 4 6 5 6 9
// 6 8 7 8 11
// 11
}
}
System.out.println(dp[a.length()][b.length()]);
}
}