Getting wrong ans for one test case


#1

#define ffd(i,strt,end)   for(int i=strt;i<end;i++)

int Solution::knight(int A, int B, int C, int D, int E, int F) {

    

int x[8] = {1,2,1,2,-1,-2,-1,-2};

    int y[8] = {-2,-1,2,1,-2,-1,2,1};

 

      bool vis[A+2][B+2]={};

      queue< pair<int,int>>q;

       //queue<array<int,2>> q;

      int ans=0;

      q.push({C,D});

      q.push({-1,-1});

      vis[C][D]=1;

      int i,j,row,col,move;

      while(q.size()){

            row=q.front().first;

            col=q.front().second;

            // move=q.front().second.second;

          q.pop();

       //   cout<<row<<col<<endl;

          if(E==row&&F==col){

              return ans;

          }

        else  if(row==-1&&col==-1){

               q.push({-1,-1});ans++;continue;

          }

          

         else{  

           ffd(k,0,8) {

               i=row+x[k];j=col+y[k];

                   if(i>=1 and j>=1 and i<=A and j<=B and !vis[i][j])   {

            

          vis[i][j]=1;

           q.push({i,j});

               }

                  

              }}

              

          }

     

      return -1;

     

}