两个玩家在一个 $N \times M$ 的网格上进行如下游戏:
- 初始时,网格中的每个格子要么是空的,要么是被占用的。
- 玩家轮流在空位上放置一颗棋子,该格子随后被占用。除了第一颗棋子可以放置在任意空位外,后续每一颗新放置的棋子必须与上一颗放置的棋子相邻。如果两个格子共用一条边,则称它们相邻。
- 当玩家无法按照上述规则放置棋子时,游戏结束。此时,无法放置棋子的玩家输掉游戏,另一名玩家获胜。
如果先手玩家在某个空位放置第一颗棋子后,假设双方均采取最优策略,先手玩家能够获胜,则称该起始格为获胜起始格。给定初始网格的描述,你需要计算它有多少个获胜起始格。
输入格式
第一行包含两个整数 $N$ 和 $M$ ($1 \le N, M \le 50$),表示网格的尺寸。 接下来的 $N$ 行,每行包含一个长度为 $M$ 的字符串。第 $i$ 个字符串的第 $j$ 个字符描述了格子 $(i, j)$ 的初始状态。字符为 “.”(点)表示空位,字符为 “#”(井号)表示被占用的格子。
输出格式
输出一行,包含一个整数,表示获胜起始格的数量。
样例
样例输入 1
3 3 #.# ... #.#
样例输出 1
4
样例输入 2
3 3 ..# ... ...
样例输出 2
0
样例输入 3
1 4 ...#
样例输出 3
2