Giving wrong answer in edit distance problem

#include
#include<string.h>
using namespace std;
int editdistance(string s1,string s2,int i,int j)
{
if(i>=s1.length()||j>=s2.length())
return 1;
int q1=editdistance(s1,s2,i,j+1);
int q2=editdistance(s1,s2,i+1,j);
int q3=editdistance(s1,s2,i+1,j+1);
int ans=min(q1,min(q2,q3))+(s1[i]==s2[j]);
return ans;
}
int main() {
string s1,s2;
cin>>s1>>s2;
cout<<editdistance(s1,s2,0,0);
return 0;
}