#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#define x first
#define y second
using namespace std;
const int N=155;
typedef pair<int,int> PII;
char s[N][N];
int n,m;
int bx=0,by=0,ex=0,ey=0;
int bfs()
{
int dist[N][N];
queue<PII> Q;
Q.push({bx,by});
dist[bx][by]=0;
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
while(!Q.empty())
{
PII t=Q.front();Q.pop();
for(int i=0;i<8;i++)
{
int a=t.x+dx[i],b=t.y+dy[i];
if(a>0 && a<=n && b>0 && b<=m && s[a][b]!='*' && dist[a][b]==0)
{
dist[a][b]=dist[t.x][t.y]+1;
if(a==ex && b==ey) return dist[a][b];
Q.push({a,b});
}
}
}
return dist[ex][ey];
}
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>s[i][j];
if(s[i][j]=='K') bx=i,by=j;
if(s[i][j]=='H') ex=i,ey=j;
}
cout<<bfs()<<endl;
return 0;
}