点阵
题号:NC16127
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

源源同学酷爱玩点阵游戏。点阵游戏规则是这样的,游戏是在一个n×n的点阵上,我们每一次选择两个相邻(只包括上下左右,斜边不算)未连边的点连上一条边,如果某个时刻点阵中存在四个点,(x,y),(x+1,y),(x+1,y+1),(x,y+1),如果这四个点之间连成的边形成了一个小正方形,那么游戏此时结束。源源想要知道,对于当前一个n×n的点阵,给定一个局势(保证游戏此时没有结束),请问最多能添加多少条边,使得游戏恰好结束。


输入描述:

对于每一个案例,我们第一行包括两个整数n,表示点阵的大小(2<=n<=80)。然后接下来是一个(2×n-1)×(2×n-1)的矩阵,表示当前局势

cell(2i-1,2j-1) 是一个'*'表示点阵上的点(i,j)

cell(2i,2*j) 是一个'.'表示空的空间(没有实际意义)

cell(2i,2j-1) 如果是'|'表示点(i,j)与点(i+1,j)相连,否则为'.'表示不相连

cell(2i-1,2j) 如果是'-'表示点(i,j)与点(i,j+1)相连,否则为'.'表示不相连

(1<=i,j<=n)

输出描述:

输出一个数,表示源源还能最多添加多少条边,使得游戏恰好结束。
示例1

输入

复制
3
*-*.*
|.|.|
*.*-*
|...|
*.*.*

输出

复制
3

说明

示例2

输入

复制
2
*.*
...
*.*

输出

复制
4

说明

示例3

输入

复制
4
*-*-*.*
|...|..
*-*-*-*
|.....|
*.*.*-*
|.....|
*-*-*-*

输出

复制
5

说明