/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
int[][]dp = new int[s1.length()+1][s2.length()+1];
for(int[] row: dp){
}
System.
out.
println(solve
(0,
0,s1.
toCharArray(),s2.
toCharArray(), dp
)); }
public static int solve(int i, int j, char[] str1, char[] str2, int[][]dp ){
if(i== str1.length && j == str2.length) return 0;
if(dp[i][j] != -1) return dp[i][j];
if(i<str1.length ){
char ch = str1[i];
int intCfts = checkConflicts(str1, i, ch);
int newCfts = checkConflicts(str2, j, ch);
ans
= Math.
min(ans, intCfts
+newCfts
+solve
(i
+1,j, str1, str2, dp
)); }
if(j<str2.length ){
char ch = str2[j];
int intCfts = checkConflicts(str2, j, ch);
int newCfts = checkConflicts(str1, i, ch);
ans
= Math.
min(ans, intCfts
+newCfts
+solve
(i,j
+1,str1, str2, dp
));
}
return dp[i][j] = ans;
}
public static int checkConflicts(char[] str, int index, char ch){
int cnt = 0;
for(int i = index; i< str.length; i++){
if(str[i]-'a' < ch-'a') cnt++;
}
return cnt;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTdHJpbmcgczEgPSAienl4d3YiOwoJCVN0cmluZyBzMiA9ICJlZGNiYSI7CgkJaW50W11bXWRwID0gbmV3IGludFtzMS5sZW5ndGgoKSsxXVtzMi5sZW5ndGgoKSsxXTsKCQlmb3IoaW50W10gcm93OiBkcCl7CgkJCUFycmF5cy5maWxsKHJvdywtMSk7CgkJfQoJCQoJCVN5c3RlbS5vdXQucHJpbnRsbihzb2x2ZSgwLDAsczEudG9DaGFyQXJyYXkoKSxzMi50b0NoYXJBcnJheSgpLCBkcCkpOwoJfQoJCglwdWJsaWMgc3RhdGljIGludCBzb2x2ZShpbnQgaSwgaW50IGosIGNoYXJbXSBzdHIxLCBjaGFyW10gc3RyMiwgaW50W11bXWRwICl7CgkJCgkJaWYoaT09IHN0cjEubGVuZ3RoICYmIGogPT0gc3RyMi5sZW5ndGgpIHJldHVybiAwOwoJCWlmKGRwW2ldW2pdICE9IC0xKSByZXR1cm4gZHBbaV1bal07CgkJCgkJaW50IGFucyA9IEludGVnZXIuTUFYX1ZBTFVFOwoJCQoJCWlmKGk8c3RyMS5sZW5ndGggKXsKCQkJY2hhciBjaCA9IHN0cjFbaV07CgkJCWludCBpbnRDZnRzID0gY2hlY2tDb25mbGljdHMoc3RyMSwgaSwgY2gpOwoJCQlpbnQgbmV3Q2Z0cyA9IGNoZWNrQ29uZmxpY3RzKHN0cjIsIGosIGNoKTsgCgkJCWFucyA9IE1hdGgubWluKGFucywgaW50Q2Z0cytuZXdDZnRzK3NvbHZlKGkrMSxqLCBzdHIxLCBzdHIyLCBkcCkpOwoJCX0KCQkKCQlpZihqPHN0cjIubGVuZ3RoICl7CgkJCWNoYXIgY2ggPSBzdHIyW2pdOwoJCQlpbnQgaW50Q2Z0cyA9IGNoZWNrQ29uZmxpY3RzKHN0cjIsIGosIGNoKTsKCQkJaW50IG5ld0NmdHMgPSBjaGVja0NvbmZsaWN0cyhzdHIxLCBpLCBjaCk7CgkJCWFucyA9IE1hdGgubWluKGFucywgaW50Q2Z0cytuZXdDZnRzK3NvbHZlKGksaisxLHN0cjEsIHN0cjIsIGRwKSk7CgkJCQoJCX0KCQkKCQlyZXR1cm4gZHBbaV1bal0gPSBhbnM7CgkJCgl9CglwdWJsaWMgc3RhdGljIGludCBjaGVja0NvbmZsaWN0cyhjaGFyW10gc3RyLCBpbnQgaW5kZXgsIGNoYXIgY2gpewoJCWludCBjbnQgPSAwOwoJCWZvcihpbnQgaSA9IGluZGV4OyBpPCBzdHIubGVuZ3RoOyBpKyspewoJCQlpZihzdHJbaV0tJ2EnIDwgY2gtJ2EnKSBjbnQrKzsKCQl9CgkJcmV0dXJuIGNudDsKCX0KfQ==