#9300. 「USACO11NOV」Cow Beauty Pageant S 普及+/提高

时间限制:1000 ms 内存限制:125 MiB 输入文件:pageant.in 输出文件:pageant.out
题目类型:传统 评测方式:文本比较
上传者: root

注意

本题采用文件输入输出。

输入文件为 pageant.in, 输出文件为pageant.out

题目描述

听说最近流行表皮有三个斑点的奶牛,Farmer John 迅速购买了不少这样的奶牛。但流行趋势也在改变,最近改为流行只有一个斑点的奶牛了。

FJ 决定在他的奶牛上涂色,从而把三个斑点合并成一个。牛皮由一个 的矩阵来表示,像这样:

................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
..XXX....XXX....

每个 X 表示斑点的一部分。如果两个 X 在竖直或水平方向上相邻,则它们属于同一个斑点(对角线相邻不算)。因此上面表示的是一头具有三个斑点的奶牛。

FJ 可以通过将一些 . 涂成 X 来改变牛身上的图案。他希望使用尽可能少的涂料将三个斑点合并为一个斑点。对于上图,下面是一种消耗涂料最少的方案(只涂了 4 个格子,新涂的格将用 * 表示):

................
..XXXX....XXX...
...XXXX*...XX...
.XXXX..**..XXX..
...*....XXXXX...
..XXX....XXX....

现在请你帮 FJ 算出将三个斑点合并为一个斑点最少需要涂多少格子。

输入格式

从文件 pageant.in 中读入数据。

第一行两个整数 )。

接下来 行,每行 个字符(.X),描述牛表皮的斑点分布情况。保证这头牛恰好有三个斑点。

输出格式

输出到文件 pageant.out 中。

输出将三个斑点合并为一个斑点最少需要涂多少格子。

样例

样例输入 1

6 16
................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
..XXX....XXX....

样例输出 1

4