#P691. 密室逃脱

密室逃脱

JJ被关在密室里!

密室的构造是一个H×WH×W的棋盘,即有HHWW列,第ii行第jj列的房间用Ai,jA_{i,j} 表示。

  • Ai,jA_{i,j}=#, 则该房间的门是锁上的;
  • Ai,jA_{i,j} =., 则该房间是可以自由进出的;
  • JJ被困在 Ai,jA_{i,j} =S 的地方,该房间是可以自由进出的。

房间是四相邻的,即(i,ji,j)可以移动到(i+1,j),(i1,j),(i,j1),(i,j+1)(i+1,j),(i-1,j),(i,j-1),(i,j+1)

JJ将通过如下方式逃脱密室,每一回合,她会按顺序执行如下操作:

  • 移动至多KK 次,可以不移动,此时被锁着的房间是不能够进入的
  • 选择至多KK 个锁着的房间打开,可以不选择任何房间,从此那些房间将一直可以自由进出

出口在密室的四周,即第11行,第11列,第HH行,第WW列的所有房间,出口一开始可能是被锁住的。

你需要用最少的回合移动到出口,输出这个回合数。

输入格式

第一行读入三个整数H,W,KH,W,K

接下来HH行,每行WW个字符,表示Ai,jA_{i,j}

输出格式

输出一行一个数,表示小JJ最少要用多少回合逃出密室。

样例

样例输入1

3 3 3
#.#
#S.
###

样例输出1

1
  • 样例解释:小JJ可以在一个回合内移动到(121,2

样例输入2

3 3 3
###
#S#
###

样例输出2

2
  • 样例解释:小JJ第一个回合不能移动,但她解锁了房间(121,2),然后她在第二个回合移动到(121,2)逃离密室。

样例输入3

7 7 2
#######
#######
##...##
###S###
##.#.##
###.###
#######

样例输出3

2

数据范围与提示

  • 3H,W8003 \leq H ,W \leq 800
  • 1KH×W1 \leq K \leq H \times W
  • Ai,jA_{i,j}  是 # ,. ,S 中的一种,有且仅有一个Ai,jA_{i,j}S
  • Subtask130分)Subtask1(30分)H,W4H,W \leq 4
  • Subtask210分)Subtask2(10分):不存在Ai,jA_{i,j} =#
  • Subtask310分)Subtask3(10分):不存在Ai,jA_{i,j}=.
  • Subtask450分)Subtask4(50分):无特殊限制
  • 时间限制:2000ms2000\mathrm{ms}
  • 空间限制:524288KB524288\mathrm{KB}