#include<bits/stdc++.h> using namespace std; struct noi{ int x,y,t; }; int n,m; int dx[8]={-2,-1,-2,-1,1,2,2,1}; int dy[8]={-1,-2,1,2,2,1,-1,-2}; int sx,sy,ex,ey; queue<noi> yu; char a[152][152]; int main(){ cin>>m>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='H'){ ex=i; ey=j; } if(a[i][j]=='K'){ sx=i; sy=j; } } } yu.push({sx,sy,0}); a[sx][ey]='*'; while(!yu.empty()){ int x=yu.front().x; int y=yu.front().y; int t=yu.front().t; if(x==ex&&y==ey){ cout<<t; return 0; } for(int i=0;i<=7;i++){ int tx=x+dx[i]; int ty=y+dy[i]; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]!='*'){ yu.push({tx,ty,t+1}); a[tx][ty]='*'; } } yu.pop(); } return 0; } /************************************************************** Problem: 1441 User: huangsheng Language: C++ Result: Accepted Time:15 ms Memory:2100 kb ****************************************************************/