P6131 [USACO11NOV] Cow Beauty Pageant S

题目描述

听说最近流行表皮有三个斑点的奶牛,Farmer John 迅速购买了不少这样的奶牛。但流行趋势也在改变,最近改为流行只有一个斑点的奶牛了。 FJ 决定在他的奶牛上涂色,从而把三个斑点合并成一个。牛皮由一个 $N \times M$ 的矩阵来表示,像这样: ```plain ................ ..XXXX....XXX... ...XXXX....XX... .XXXX......XXX.. ........XXXXX... ..XXX....XXX.... ``` 每个 `X` 表示斑点的一部分。如果两个 `X` 在竖直或水平方向上相邻,则它们属于同一个斑点(对角线相邻不算)。因此上面表示的是一头具有三个斑点的奶牛。 FJ 可以通过将一些 `.` 涂成 `X` 来改变牛身上的图案。他希望使用尽可能少的涂料将三个斑点合并为一个斑点。对于上图,下面是一种消耗涂料最少的方案(只涂了 4 个格子,新涂的格将用 `*` 表示): ```plain ................ ..XXXX....XXX... ...XXXX*...XX... .XXXX..**..XXX.. ...*....XXXXX... ..XXX....XXX.... ``` 现在请你帮 FJ 算出将三个斑点合并为一个斑点最少需要涂多少格子。

输入格式

第一行两个整数 $N,M$($1 \leq N,M \leq 50$)。 接下来 $N$ 行,每行 $M$ 个字符(`.` 或 `X`),描述牛表皮的斑点分布情况。保证这头牛恰好有三个斑点。

输出格式

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