#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int inf=INT_MAX-1;
int dp[155][155];
char s[155][155];
int dx[8]={-1,-1,1,1,-2,-2,2,2};//搜索的方向
int dy[8]={-2,2,-2,2,1,-1,1,-1};
int sx,sy;//起点
int bx,by;//终点
int n,m;
typedef pair<int ,int>P;
int bfs(){
queue <P> q;for(int i=0;i<n;i++){for(int j=0;j<m;j++){
dp[i][j]=inf;}}
q.push(P(sx,sy));
dp[sx][sy]=0;while(q.size()){P p=q.front();
q.pop();if(p.first==bx&&p.second==by)break;for(int i=0;i<8;i++){
int nx=p.first+dx[i];
int ny=p.second+dy[i];if(nx>=0&&nx<n&&ny>=0&&ny<m&&s[nx][ny]!='*'&&dp[nx][ny]==inf){
q.push(P(nx,ny));
dp[nx][ny]=dp[p.first][p.second]+1;}}}}
int main(){scanf("%d %d",&m,&n);for(int i=0;i<n;i++){scanf("%s",s[i]);getchar();}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i][j]=='K'){
sx=i;
sy=j;}elseif(s[i][j]=='H'){
bx=i;
by=j;}}}bfs();printf("%d\n",dp[bx][by]);}