Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:1024 MB

#4485. 「CERC2018」Matrice

Statistics

题目描述

译自 CERC 2018J. Matrice

特工 Sue Thomas 和她的儿子正在网格中寻找 trinity。trinity 是一个新词,正如词素 tri 所示,指的是由网格中单元格组成的三角形。

每个 trinity 是一个正方形的单元格区域去除某对角线上方或下方的部分(一个等腰直角三角形,两腰分别与网格两边分别平行)。对角线可以是主对角线(东南-西北方向),也可以是副对角线(西南-东北方向)。一个合法的 trinity 至少包含三个单元格,并且所有单元格中字符都相同。

输入格式

输入的第一行是两个整数 $N,M$,分别表示这个网格的行数和列数。

接下来 $N$ 行每行一个长为 $M$ 的字符串,表示这个网格。

输出格式

输出网格中所有不同合法的 trinity 个数。

样例 1

input

2 2
AA
Ad

output

1

样例 2

input

5 5
#####
####.
###..
##...
#....

output

60

样例 3

input

5 4
hwwr
eahe
lroy
lswo
oaau

output

0

样例 4

input

5 6
#girls
##areb
#.#est
#..#!!
#####!

output

7

数据范围与提示

$1\le N,M\le 10^3$,保证输入中出现的字符 ASCII 码在 $33$ 到 $126$ 之间。