Damerau – Levenshtein distance (Editar Distância com Transposição) c implementação

Implementei a distância Damerau-Levenshtein em c ++ mas não dá correto o / p para a entrada (pantera, aorta) o correto o / p é 4 mas meu código dá 5 .....

int  editdist(string s,string t,int n,int m) 
{
    int d1,d2,d3,cost;
    int i,j;
    for(i=0;i<=n;i++) 
    {
        for(j=0;j<=m;j++)
        {
          if(s[i+1]==t[j+1]) 
              cost=0;
          else
              cost=1;
          d1=d[i][j+1]+1;
          d2=d[i+1][j]+1;
          d3=d[i][j]+cost;
          d[i+1][j+1]=minimum(d1,d2,d3);
          if(i>0 && j>0 && s[i+1]==t[j] && s[i]==t[j+1] )   //transposition
          {
              d[i+1][j+1]=min(d[i+1][j+1],d[i-1][j-1]+cost);
          }
        }
    }
    return d[n+1][m+1]; 
}

Não vejo erros. Alguém pode encontrar um problema com o código?

questionAnswers(3)

yourAnswerToTheQuestion