#370. 粉刷

粉刷

题目描述

windy 有一块木板需要粉刷。木板可以看成是一个 N×M 的网格图,每个格子要被刷成红色或蓝色。在 windy 拿到木板的时候,整块木板已经被刷成了红色。

windy 已经准备好了足够的红色和蓝色两种涂料。每次粉刷,windy 可以选择任意四连通的一块区域,将这块区域整体粉刷成同一种颜色,原先的颜色将被覆盖。

问:windy 最少需要粉刷多少次可以完成任务?

输入格式

第一行:包含两个整数 N, M

接下来有 N 行,每行一个长度为 M 的字符串,'0'表示红色,'1'表示蓝色,表示木板的每个格子最终需要被粉刷的颜色。

输出格式

包含一个整数,表示 windy 最少需要粉刷的次数。

样例输入

3 3
010
101
010

样例输出

2

数据范围

15% 的数据:N×M ≤ 15

另有 15% 的数据:M =1

100%的数据:1 ≤ N, M ≤ 50