#abc088d. [abc088_d]Grid Repainting

[abc088_d]Grid Repainting

题目描述

我们有一个 HtimesWH \\times W 的网格,格子被涂成黑色或白色。第 ii 行从上到下,第 jj 列从左到右标记为 (i,j)(i, j)
Snuke 想在这个网格上玩以下游戏。游戏开始时,在方格 (1,1)(1, 1) 上有一个叫 Kenus 的角色。玩家可以重复将 Kenus 向上、向下、向左或向右移动一个方格。当 Kenus 经过的方格只有白色方格时,游戏结束。
在 Snuke 开始游戏之前,他可以将一些白色方格的颜色改变为黑色。然而,他不能改变方格 (1,1)(1, 1)(H,W)(H, W) 的颜色。并且,颜色的改变必须在游戏开始之前全部完成。
游戏结束后,Snuke 的得分将是游戏开始之前更改方格颜色的次数。找到 Snuke 可以达到的最大可能得分,或者如果游戏无法完成,则输出 -1,即无论 Snuke 如何改变方格的颜色,Kenus 都无法到达方格 (H,W)(H, W)

方格的颜色用字符 si,js_{i, j} 表示。如果方格 (i,j)(i, j) 最初被涂成白色,则 si,js_{i, j}.;如果方格 (i,j)(i, j) 最初被涂成黑色,则 si,js_{i, j}#

约束条件

  • HH 是介于 225050(包含边界)的整数。
  • WW 是介于 225050(包含边界)的整数。
  • si,js_{i, j}.#1iH,1jW1 \leq i \leq H, 1 \leq j \leq W)。
  • s1,1s_{1, 1}sH,Ws_{H, W}.

输入

从标准输入中以以下格式给出输入:

HH WW s1,1s1,2s1,3...s1,Ws_{1, 1}s_{1, 2}s_{1, 3} ... s_{1, W} s2,1s2,2s2,3...s2,Ws_{2, 1}s_{2, 2}s_{2, 3} ... s_{2, W} :: :: sH,1sH,2sH,3...sH,Ws_{H, 1}s_{H, 2}s_{H, 3} ... s_{H, W}

输出

输出 Snuke 可以达到的最大可能得分,或者如果游戏无法完成,则输出 -1。

示例输入1

3 3
..#
#..
...

示例输出1

2

通过改变方格颜色,分数 2 可以通过以下方式达到:

示例1的说明

示例输入2

10 37
.....................................
...#...####...####..###...###...###..
..#.#..#...#.##....#...#.#...#.#...#.
..#.#..#...#.#.....#...#.#...#.#...#.
.#...#.#..##.#.....#...#.#.###.#.###.
.#####.####..#.....#...#..##....##...
.#...#.#...#.#.....#...#.#...#.#...#.
.#...#.#...#.##....#...#.#...#.#...#.
.#...#.####...####..###...###...###..
.....................................

示例输出2

209