#include<iostream>
#include<cstring>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
const int N = 200, M = N*N;
int m, n;
char g[N][N];
int st[N][N];
PII q[M];
int bfs(int sx, int sy){
int dx[] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[] = {1, 2, 2, 1, -1, -2, -2, -1};
memset(st, -1, sizeof st);
q[0] = {sx, sy};
st[sx][sy] = 0;
int hh = 0, tt = 0;
while(hh <= tt){
PII t = q[hh ++];
for(int i = 0; i < 8; i++){
int a = t.x + dx[i], b = t.y + dy[i];
if(g[t.x][t.y] == 'H') return st[t.x][t.y];
if(a < 0 || a >= n || b < 0 || b >= m) continue;
if(st[a][b] != -1 || g[a][b] == '*') continue;
// 走到这步花费多少
st[a][b] = st[t.x][t.y] + 1;
q[++ tt] = {a, b};
}
}
return -1;
}
int main(){
cin >> m >> n;
PII s;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++){
cin >> g[i][j];
if(g[i][j] == 'K')
s = {i, j};
}
cout << bfs(s.x, s.y) << endl;
return 0;
}