题目描述
题目描述
听说最近流行表皮有三个斑点的奶牛,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 算出将三个斑点合并为一个斑点最少需要涂多少格子。
输入格式
第一行两个整数 N,M。
接下来 N 行,每行 M 个字符(* 或 X),描述牛表皮的斑点分布情况。保证这头牛恰好有三个斑点。
输出格式
输出将三个斑点合并为一个斑点最少需要涂多少格子。
6 16
................
..XXXX....XXX...
...XXXX....XX...
.XXXX......XXX..
........XXXXX...
..XXX....XXX....
4
35 42
..........................................
...XX.....................................
...XXXXX..................................
....XXXXX.................................
....XXXXX.................................
...XXXXXX.X...............................
.XXXXXXXXXX...............................
.XXXXXXXXXXX..............................
XXXXXXXXXXX...............................
XX...XXXXXX...............................
......XXXXXX..............................
........XXXX..............................
.........X................................
..........................................
..........................................
..........................................
....................XXXXXXXXX.............
....................XXXXXXXX..............
....................XXXXXXXX..............
....................X.XXXXX...............
........................X.................
..........................................
..........................................
..........................................
...XXXXXXXXXXX............................
...XXXXXXXXXXXX...........................
..XXXXXXXXXXX.X...........................
...XXXXXXXXXX.............................
...X...XXXXXXX............................
........XXXXXX............................
.........XXXX.............................
..........XX..............................
..........................................
..........................................
..........................................
20
32 45
.............................................
.............................................
..................X..........................
..................XXX........................
...................XX........................
...............XX..XX........................
...............XXX.XX........................
..............XXXXXXX........................
...............XXXXXX........................
...............XXXXXX........................
...............XXXXXX........................
.................X.XX........................
.................X.XX........................
.............................................
.............................................
.....................XXXXXXXXX...............
.....................XXXXXXXXX...............
.....................XXXXXXXX................
.....................XXXXXXX.................
.....................XXXXXXX.................
.....................XXXXXX..................
.....................XXXXXX..................
.............................................
.............................................
...XX........................................
..XXXX.......................................
....XX..XX...................................
...XXXXXXXXX.................................
...XXXXXXXXX.................................
..XXXXXXXXXXX................................
..XXXXXXXXXXX................................
.............................................
18
1 15
X.....X.......X
12
数据范围
()