#TCTM2515. 掀翻奶牛

0

掀翻奶牛

掀翻奶牛

题目描述

农夫约翰偶尔会遇到一些无聊的青少年来找麻烦,他们晚上偷偷潜入他的农庄,然后将他的牛掀翻在地。

一天早上,睡醒的约翰发现这种事情又发生了----晚上,他的 N2N^2 头奶牛排列成 N×NN×N 的矩阵在田地吃草,醒来后他发现,其中一些奶牛已经被掀翻了。

幸运的是,约翰用拖拉机和铲车的零件制作了一台机器----奶牛翻转机 30003000。

使用该机器可以一下子翻转一大片的奶牛。

使用该机器时,先选定奶牛矩阵中的某个左上角子矩阵(即一个包含左上角奶牛的子矩阵),机器就可以翻转子矩阵内的所有奶牛。

不幸的是,由于机器是大范围无差别翻转,所以选中区域内的倒地奶牛会被扶起,而站立奶牛会被掀翻。

换句话说,该机器会切换选中子矩阵中所有奶牛的“状态”。

约翰认为,只要该机器的使用次数够多,就一定可以使得所有的奶牛都恢复到站立状态。

请你确定,至少需要使用该机器多少次,才能使得所有奶牛都处于站立状态。

注意,将该机器作用于同一子矩阵两次是没有意义的,因为这样不会对该矩阵的奶牛产生实际影响。

输入格式

第一行包含整数 $N$。

接下来 NN 行,每行包含一个长度为 NN 的 0101 字符串,表示奶牛矩阵,其中 00 表示一头站立的牛,11 表示一头倒地的牛。

输出格式

输出使得所有奶牛都处于站立状态,所需要的奶牛翻转机 $3000$ 的最少使用次数。
3
001
111
111
2

提示

#### 数据范围与提示 $1≤N≤10$ #### 样例解释 一种可行的方法是,先将机器作用于整个奶牛矩阵,奶牛的状态变为: ``` 110 000 000
再将机器作用于左上方,只包含两个 1 的小矩阵,即可使所有奶牛处于站立状态。

<h2>来源</h2>
童程童美