E=enumerate
S=lambda x:(len(x[2]),sum(a for _,a in x[2]))
def f(b):
d,D={(x,y):v for x,r in E(b)for y,v in E(r)},{};x,y=[i for i in d if'R'==d[i]][0];q=[(x,y,[],[])]
while q:
(x,y,p,P),*q=q
if'K'==d[(x,y)]:return p
for X in[(0,1),(1,0),(-1,0),(0,-1)]:
C=(x+X[0],y+X[1]);U=(*C,p+[(X,1)]if[]==p or X!=p[-1][0]else p[:-1]+[(X,p[-1][-1]+1)],P+[C])
if(d.get(C)in' K')*~-(C in P)*(~-(C in D)or D[C]>=S(U)):q+=U,;D[C]=S(U)
q=sorted(q,key=S)
s1 = """
######################
# d 3 Kj #
# #
# R #
# q #
######################
"""
s2 = """
######################
# d r 3 Kj #
# p p #
# T X #
# q s t #
# #
# R o d W #
# #
# g t U #
# #
######################
"""
s3 = """
######################
# spdfmsdlwe9mw WEK3#
# we hi #
# rdf fsszr#
# sdfg gjkti #
# fc d g i #
# dfg sdd #
# g zfg #
# df df #
# xcf R#
######################
"""
def to_list(s):
return [[*i] for i in filter(None, s.split('\n'))]
print(f(to_list(s1)))
print(f(to_list(s2)))
print(f(to_list(s3)))
RT1lbnVtZXJhdGUKUz1sYW1iZGEgeDoobGVuKHhbMl0pLHN1bShhIGZvciBfLGEgaW4geFsyXSkpCmRlZiBmKGIpOgogZCxEPXsoeCx5KTp2IGZvciB4LHIgaW4gRShiKWZvciB5LHYgaW4gRShyKX0se307eCx5PVtpIGZvciBpIGluIGQgaWYnUic9PWRbaV1dWzBdO3E9Wyh4LHksW10sW10pXQogd2hpbGUgcToKICAoeCx5LHAsUCksKnE9cQogIGlmJ0snPT1kWyh4LHkpXTpyZXR1cm4gcAogIGZvciBYIGluWygwLDEpLCgxLDApLCgtMSwwKSwoMCwtMSldOgogICBDPSh4K1hbMF0seStYWzFdKTtVPSgqQyxwK1soWCwxKV1pZltdPT1wIG9yIFghPXBbLTFdWzBdZWxzZSBwWzotMV0rWyhYLHBbLTFdWy0xXSsxKV0sUCtbQ10pCiAgIGlmKGQuZ2V0KEMpaW4nIEsnKSp+LShDIGluIFApKih+LShDIGluIEQpb3IgRFtDXT49UyhVKSk6cSs9VSw7RFtDXT1TKFUpCiAgcT1zb3J0ZWQocSxrZXk9UykKICAKczEgPSAiIiIKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICBkICAgICAgMyAgICBLaiAgICAjCiMgICAgICAgICAgICAgICAgICAgICMKIyBSICAgICAgICAgICAgICAgICAgIwojICAgICAgcSAgICAgICAgICAgICAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIiIiCnMyID0gIiIiCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgZCAgciAgIDMgICAgS2ogICAgIwojICAgIHAgICAgICAgIHAgICAgICAjCiMgICAgICAgICBUICAgICAgICBYICMKIyAgICAgIHEgICBzICAgdCAgICAgIwojICAgICAgICAgICAgICAgICAgICAjCiMgIFIgbyAgICBkICAgICBXICAgICMKIyAgICAgICAgICAgICAgICAgICAgIwojICAgIGcgICAgICB0ICAgICBVICAjCiMgICAgICAgICAgICAgICAgICAgICMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoiIiIKczMgPSAiIiIKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICBzcGRmbXNkbHdlOW13IFdFSzMjCiMgICAgd2UgICAgaGkgICAgICAgICMKIyAgIHJkZiAgICAgICAgIGZzc3pyIwojICAgICBzZGZnICBnamt0aSAgICAjCiMgICBmYyAgZCBnIGkgICAgICAgICMKIyAgICAgZGZnICAgIHNkZCAgICAgIwojICAgIGcgICAgICAgIHpmZyAgICAjCiMgIGRmICAgZGYgICAgICAgICAgICMKIyAgICAgICAgICAgICB4Y2YgICBSIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiIiIgpkZWYgdG9fbGlzdChzKToKCXJldHVybiBbWyppXSBmb3IgaSBpbiBmaWx0ZXIoTm9uZSwgcy5zcGxpdCgnXG4nKSldCgpwcmludChmKHRvX2xpc3QoczEpKSkKcHJpbnQoZih0b19saXN0KHMyKSkpCnByaW50KGYodG9fbGlzdChzMykpKQ==
[((0, 1), 13), ((-1, 0), 2)]
[((-1, 0), 1), ((0, 1), 10), ((-1, 0), 4), ((0, 1), 2)]
[((-1, 0), 1), ((0, -1), 9), ((-1, 0), 5), ((0, 1), 4), ((-1, 0), 1), ((0, 1), 4), ((-1, 0), 1)]