#2263. Cow Tipping

Cow Tipping

题目描述

农民约翰偶尔会遇到无聊的青少年,他们在晚上参观他的农场,并给他的奶牛小费。

一天早上,他醒来发现事情又发生了\red{--}他的N2\red{N²}头奶牛开始在一个完美的N×\red{N×}N\red{N}方格排列中夜间放牧(1\red{(1≤}N\red{N≤}10\red{10)} ,但他发现其中 一些已经倾覆。

幸运的是,农民约翰用拖拉机和叉车的零件制造了一台很棒的机器,奶牛卸垛机1000\red{1000},它可以一次翻转一大群奶牛,帮助他眷让所有的奶牛重新站起来。

他可以将机器应用于他的奶牛网格中的任何"左上矩形"一个包含左上奶牛的矩形子网格。

当他这样做时,机器翻转这个矩形中的每头奶牛,将倾斜的奶牛放回它们的脚上,但不幸的是,也翻转了已经站起来的奶牛!换句话说,机器"切换"矩形中每头奶牛的状态。

农民约翰认为,通过将他的机器多次应用到适当的矩形集合中,他最终可以将所有奶牛恢复到其正确的、未倾斜的状态。请帮助他确定执行此操作所需的机器的最小应用程序数。

请注意,将机器应用于同一个矩形两次是没有意义的,因为这对矩形中的奶牛没有净影响。

因此,您应该只考虑将机器应用于每个左上角的矩形,可能只应用一次。

输入格式

输入的第一行是整数N\red{N}

N\red{N}后续行中的每一行都包含一个N\red{N}字符字符串,每个0\red{0}(表示上翘的奶牛)或1\red{1}(表示上翘的奶牛)。

输出格式

请输出农民约翰应用奶解吸器3000\red{3000}使其所有奶牛恢复站立所需的最小次数。

样例

输入样例

3
001
111
111

输出样例

2

提示

在本例中,如果FJ\red{FJ}将其机器应用于整个奶牛群(这是一个有效的左上角矩形),他将将其状态切换为以下状态:

110
000
000

剩下的就是将机器应用到左上角包含两个1\red{1}的矩形上,他就完成了。总共只有2\red{2}个应用程序。