十面埋伏
题号:NC204861
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

经过多年的征战,牛牛在与牛可乐的对决渐渐处于下风,于是牛牛决定对牛可乐来一次大围剿。

战场可以看作一张  的地图,牛可乐的士兵只能上下左右移动,不能斜着移动,牛牛决定挖一圈陷阱包围牛可乐的士兵。牛牛想知道包围牛可乐的士兵所需要的最少的陷阱数量是多少(划掉,具体请看update),但是牛牛并不会排兵布阵,于是只能求助于你了。
保证地图的边界处不会有士兵.
保证牛可乐的士兵是连通的
要求牛可乐使用的陷阱构成的包围圈与牛可乐的士兵之间要求是紧密接触的

输入描述:

第一行输入两个整数  和 ,表示地图的大小

下面  行每行  个字符, 表示空地, 表示士兵。
保证输出的字符串只包含  和 

输出描述:

输出挖完陷阱后的地图,陷阱用  来表示.

示例1

输入

复制
6 5
.....
.###.
.#.#.
.###.
..##.
.....

输出

复制
.***.
*###*
*#.#*
*###*
.*##*
..**.
示例2

输入

复制
10 10
..........
..######..
.#######..
.#######..
.##.###...
.##..##...
.....##...
..........
..........
..........

输出

复制
..******..
.*######*.
*#######*.
*#######*.
*##*###*..
*##**##*..
.**.*##*..
.....**...
..........
..........

说明


备注: