Luka 非常喜欢巧克力。他收到了一块由 $n$ 行 $m$ 列组成的巨大巧克力作为生日礼物,并迫不及待地想要品尝它。这块巧克力由黑色和白色的巧克力方格组成。然而,Luka 并不太喜欢白巧克力,他只想吃黑色的方格。
在开始吃之前,Luka 会对巧克力进行切割。他会在巧克力的行与行、列与列之间进行若干次水平和/或垂直的切割。一次垂直切割会从巧克力的顶边一直延伸到底边,而一次水平切割会从左边一直延伸到右边。切割完成后,Luka 将得到若干个矩形的巧克力块。
由于 Luka 只吃巧克力的黑色部分,他希望将黑色方格与白色方格完全分离。这意味着切割出的每一个巧克力块都必须完全由黑巧克力组成,或者完全由白巧克力组成。
Luka 希望能尽快开始享用,而不是把时间浪费在切割上,因此他请求你帮助他确定将黑色方格与白色方格分离所需的最少切割次数。
图 1:这是第一个样例中巧克力的切割方式,以便用最少的切割次数将黑色部分与白色部分分离
输入格式
第一行包含两个自然数 $n$ 和 $m$ ($1 \le n, m \le 200$),表示巧克力的行数和列数。
接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符为 0 或 1。字符 0 表示白色方格,1 表示黑色方格。
输出格式
输出仅一行,包含一个整数,表示将黑色方格与白色方格分离所需的最少切割次数。
子任务
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | 5 | 巧克力呈棋盘状,即第 $i$ 行第 $j$ 列的格子在 $i + j$ 为偶数时为白色,为奇数时为黑色。 |
| 2 | 11 | $n = 1$ |
| 3 | 11 | 恰好有一个格子是黑色。 |
| 4 | 23 | 无附加限制。 |
样例
输入样例 1
4 7 0000000 0111000 0111100 0000000
输出样例 1
6
样例 1 说明
如上图所示。
输入样例 2
4 5 00000 01100 01100 00000
输出样例 2
4
样例 2 说明
Luka 应该在第 1 行和第 2 行之间、第 3 行和第 4 行之间、第 1 列和第 2 列之间、以及第 3 列和第 4 列之间各切一刀。
输入样例 3
4 4 0101 1010 0101 1010
输出样例 3
6
样例 3 说明
Luka 应该在每两个相邻的行和列之间都切一刀——总共 6 刀。