常见的bfs
from collections import deque
m,n=map(int,input().split())
ma=[]
st=[[0 for _ in range(155)]for _ in range(155)]
ix=[-1,-2,-2,-1,1,2,2,1]
iy=[-2,-1,1,2,2,1,-1,-2]
for i in range(n):
ma.append(list(input()))
sx=0
sy=0
def bfs(x,y):
d=deque()
d.append([x,y])
while d:
tx=d[0][0]
ty=d[0][1]
for i in range(8):
dx=tx+ix[i]
dy=ty+iy[i]
if dx>=0 and dx<n and dy>=0 and dy<m and ma[dx][dy]!='*' and st[dx][dy]==0:
st[dx][dy]=st[tx][ty]+1
if ma[dx][dy]=='H':
print(st[dx][dy])
return
d.append([dx,dy])
d.popleft()
for i in range(n):
for j in range(m):
if ma[i][j]=='K':
sx=i
sy=j
break
bfs(sx,sy)