#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> q; 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; } } } q.push({sx,sy,0}); a[sx][ey]='*'; while(!q.empty()) { int x=q.front().x; int y=q.front().y; int t=q.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]!='*') { q.push({tx,ty,t+1}); a[tx][ty]='*'; } } q.pop(); } return 0; } /************************************************************** Problem: 1441 User: hongyipin Language: C++ Result: Accepted Time:14 ms Memory:2100 kb ****************************************************************/