师傅又被妖怪抓走了。师傅被困的宫殿可以看作一个 的由字符构成的矩阵,每一个字符表示一个房间。字符'K'表示孙悟空的起始位置,'T'表示师傅被困的位置,'S'表示有蛇的房间,'.'表示空房间,'#'表示无法进入的房间。矩阵中包含且仅包含一个'K'和一个'T'。
每分钟,孙悟空都可以上下左右移动一格,如果遇到蛇,打倒蛇需要额外花费一分钟,保证地图上最多有五个有蛇的房间。此外孙悟空还需要集齐所有种类的钥匙才能救出师傅。钥匙的种类以 的顺序编号,且钥匙需要按照顺序拿。具体来说,孙悟空能拿第
种钥匙,当且仅当对于
且
种类的钥匙都已经拿到至少一把。除了'#'的房间,其它所有房间都可以经过。孙悟空想要尽快救出师傅,你能帮帮他吗。
第一行输入两个整数
,分别表示宫殿的大小和钥匙的总数。
接下来
行,每行
个字符,字符仅由'K','T','.','S','#'以及1到
的数字字符组成。数据保证'K','T' 出现且仅出现一次,1到
的数字字符至少出现一次,'S'字符最多出现5次。
输出一行,如果孙悟空能救出师傅,输出一个整数表示孙悟空至少需要多少分钟才能救出师傅。否则输出"impossible"