点燃星海
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

在遥远的宇宙中,有一种名为真蛰虫的生物。真蛰虫具有一种特殊的性质:当它们死亡时会引发猛烈的爆炸,炸死与其相邻的所有真蛰虫。给定一个 nm 列的网格地图,每个位置上要么有真蛰虫,要么为空地。两个真蛰虫相邻是指它们在水平或垂直方向上有公共边。由于宇宙空间发生了扭曲,地图的上下边界是相连的,左右边界也是相连的,即地图在垂直和水平两个方向上都是循环的。具体来说:
  • 如果一个真蛰虫在第 1 行,它的上方相邻位置是最后一行对应列的格子。
  • 如果一个真蛰虫在最后一行,它的下方相邻位置是第 1 行对应列的格子。
  • 如果一个真蛰虫在第 1 列,它的左侧相邻位置是同一行的最后一列的格子。
  • 如果一个真蛰虫在最后一列,它的右侧相邻位置是同一行的第 1 列的格子。

如上图所示,与橙色格子相邻的四个格子用绿色标了出来。
流萤小姐想知道最少要杀死几只真蛰虫才能将所有的真蛰虫消灭干净,您能帮帮她吗?

输入描述:

第一行包含两个整数 nm1 \le n, m \le 1000),分别表示地图的行数和列数。
接下来的 n 行,每行包含一个长度为 m 的字符串,由字符 '0' 和 '1' 组成。字符 '1' 表示真蛰虫,字符 '0' 表示空地。

输出描述:

输出一行一个整数,表示最少需要杀死的真蛰虫数量。
示例1

输入

复制
5 5
10101
00100
11011
00100
10101

输出

复制
3

说明

杀死下图中三个标红位置的真蛰虫,即可通过真蛰虫死亡时引发的连锁反应将所有的真蛰虫消灭干净。