蝴蝶
题号:NC14381
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

给定一个 n*m 的矩阵,矩阵元素由X和O构成,请求出其中最大的蝴蝶形状。
蝴蝶形状的定义如下:
存在一个中心点(必须为X),并且其往左上(必须为X)、左下(必须为X)、右上(必须为O)、右下(必须为O)四个方向扩展相同的长度,且左上顶点与左下顶点之间全由X填充,右上顶点与右下顶点之间全由O填充。
我们不在意在蝴蝶形状内部是X还是O。
例如:
    XAAAO
    XXAOO
    XAXAO
    XXAOO
    XAAAO
是一个蝴蝶形状(其中A表示X或O)。
    X
也是。

    XAAO
    XXOO
    XXOO
    XAAO
不是(不存在中心点)。

输入描述:

第一行两个整数n, m表示矩阵的大小 (1 <= n, m <= 500);
接下来 n 行,每行一个长度为 m 的字符串表示矩阵,矩阵元素保证由X和O构成。

输出描述:

一行一个整数表示最大的蝴蝶形状的对角线的长度。
示例1

输入

复制
5 5
XOOOO
XXOOO
XOXOO
XXOOO
XOOOO

输出

复制
5