[POI1999]仓库管理员

成绩 0 开启时间 2013年01月22日 星期二 10:35
折扣 0.8 折扣时间 2013年01月22日 星期二 10:35
允许迟交 关闭时间 2013年01月22日 星期二 10:35
输入文件 mag.in 输出文件 mag.out

问题描述

码头仓库是一块N×M个格子的矩形,有的格子是空闲的——没有任何东西,有的格子上已经堆放了沉重的货物——太重了而不再可能被移动。

现在,仓库管理员有一项任务,要将一个小箱子推到指定的格子上去。管理员可以在仓库中移动,但不得跨过沉重的不可移动的货物和箱子。当管理 员站在与箱子相邻的格子上时,他可以做一次推动,把箱子推到另一个相邻的格子。考虑到箱子很重,仓库管理员为了节省体力,想尽量减少推箱子的次数。你能帮 帮他么?

输入文件

输入文件第一行有两个数N,M(1<=N,M<=100),表示仓库是N×M的矩形。以下有N行,每行有M个字符,表示一个格子的状态。

  • S 表示该格子上放了不可移动的沉重货物。
  • w 表示该格子上没有任何东西
  • M 表示仓库管理员初始的位置
  • P 表示箱子的初始位置
  • K 表示箱子的目标位置

输出文件

输出文件只有一行,一个数,表示仓库管理员最少要推多少次箱子。如果仓库管理员不可能将箱子推到目标位置,那么请输出NIE,表示无解。

样例输入

10 12
SSSSSSSSSSSS
SwwwwwwwSSSS
SwSSSSwwSSSS
SwSSSSwwSKSS
SwSSSSwwSwSS
SwwwwwPwwwww
SSSSSSSwSwSw
SSSSSSMwSwww
SSSSSSSSSSSS
SSSSSSSSSSSS

样例输出

7