#include<iostream>
#include<string.h>
#define m 20
int arr[m][m];
using namespace std;
int min(int a,int b)
{
return a>b?b:a;
}
int min(int a,int b,int c)
{
return min(min(a,b),c);
}
int fun(char st1[],char st2[],int low1,int low2,int high1,int high2)
{
if(arr[low1][low2]!=-1)
return arr[low1][low2];
if(low1>high1)
return (high2-low2+1);
if(low2>high2)
return (high1-low1+1);
arr[low1+1][low2]=fun(st1,st2,low1+1,low2,high1,high2);
arr[low1][low2+1]=fun(st1,st2,low1,low2+1,high1,high2);
arr[low1+1][low2+1]=fun(st1,st2,low1+1,low2+1,high1,high2);
if(st1[low1]!=st2[low2])
arr[low1][low2]=min(1+arr[low1+1][low2],1+arr[low1][low2+1],1+arr[low1+1][low2+1]);
else
arr[low1][low2]=min(1+arr[low1+1][low2],1+arr[low1][low2+1],arr[low1+1][low2+1]);
return arr[low1][low2];
}
int main()
{
char st1[] = "sunday" ;
char st2[] = "saturday" ;
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
arr[i][j]=-1;
}
}
cout<<fun(st1,st2,0,0,strlen(st1)-1,strlen(st2)-1)<<" is minimum possible changes to convert s1 to s2.\n";
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZy5oPgojZGVmaW5lIG0gMjAKaW50IGFyclttXVttXTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1pbihpbnQgYSxpbnQgYikKewoJcmV0dXJuIGE+Yj9iOmE7Cn0KaW50IG1pbihpbnQgYSxpbnQgYixpbnQgYykKewoJcmV0dXJuIG1pbihtaW4oYSxiKSxjKTsKfQppbnQgZnVuKGNoYXIgc3QxW10sY2hhciBzdDJbXSxpbnQgbG93MSxpbnQgbG93MixpbnQgaGlnaDEsaW50IGhpZ2gyKQp7CglpZihhcnJbbG93MV1bbG93Ml0hPS0xKQoJICAgcmV0dXJuIGFycltsb3cxXVtsb3cyXTsKICAgIGlmKGxvdzE+aGlnaDEpCiAgICAgICAgcmV0dXJuIChoaWdoMi1sb3cyKzEpOwogICAgaWYobG93Mj5oaWdoMikKICAgICAgICByZXR1cm4gKGhpZ2gxLWxvdzErMSk7CiAgICBhcnJbbG93MSsxXVtsb3cyXT1mdW4oc3QxLHN0Mixsb3cxKzEsbG93MixoaWdoMSxoaWdoMik7CiAgICBhcnJbbG93MV1bbG93MisxXT1mdW4oc3QxLHN0Mixsb3cxLGxvdzIrMSxoaWdoMSxoaWdoMik7CiAgICBhcnJbbG93MSsxXVtsb3cyKzFdPWZ1bihzdDEsc3QyLGxvdzErMSxsb3cyKzEsaGlnaDEsaGlnaDIpOwogICAgaWYoc3QxW2xvdzFdIT1zdDJbbG93Ml0pCiAgICAgICBhcnJbbG93MV1bbG93Ml09bWluKDErYXJyW2xvdzErMV1bbG93Ml0sMSthcnJbbG93MV1bbG93MisxXSwxK2Fycltsb3cxKzFdW2xvdzIrMV0pOwogICAgZWxzZQogICAgICAgYXJyW2xvdzFdW2xvdzJdPW1pbigxK2Fycltsb3cxKzFdW2xvdzJdLDErYXJyW2xvdzFdW2xvdzIrMV0sYXJyW2xvdzErMV1bbG93MisxXSk7CiAgICByZXR1cm4gYXJyW2xvdzFdW2xvdzJdOwp9CmludCBtYWluKCkKewogIGNoYXIgc3QxW10gPSAic3VuZGF5IiA7CiAgY2hhciBzdDJbXSA9ICAic2F0dXJkYXkiIDsKCWZvcihpbnQgaT0wO2k8bTtpKyspCgl7CgkJZm9yKGludCBqPTA7ajxtO2orKykKCQl7CgkJCWFycltpXVtqXT0tMTsKCQl9Cgl9Cgljb3V0PDxmdW4oc3QxLHN0MiwwLDAsc3RybGVuKHN0MSktMSxzdHJsZW4oc3QyKS0xKTw8IiBpcyBtaW5pbXVtIHBvc3NpYmxlIGNoYW5nZXMgdG8gY29udmVydCBzMSB0byBzMi5cbiI7CglyZXR1cm4gMDsKfQ==