特工 Sue Thomas 和她的儿子正在网格中寻找 trinity。单词 trinity 是一个新词,指的是网格中由单元格组成的某种特定的三角形(正如词根 “tri” 所暗示的那样)形状。
每个 trinity 都是通过选定一个正方形的单元格区域,并移除该区域两条对角线之一的上方或下方的所有单元格而得到的。对角线可以是主对角线(西北-东南方向)或副对角线(东北-西南方向)。一个合法的 trinity 包含至少三个网格单元,且其所有单元格都包含相同的字符。
输入格式
输入的第一行包含两个整数 $N$ 和 $M$($1 \le N, M \le 1000$),分别表示网格的行数和列数。
接下来的 $N$ 行,每行包含 $M$ 个字符,其 ASCII 码在 $33$ 到 $126$ 之间(含边界)。
输出格式
输出输入网格中不同的合法 trinity 的数量。
样例
输入样例 1
2 2 AA Ad
输出样例 1
1
输入样例 2
5 5 ##### ####. ###.. ##... #....
输出样例 2
60
输入样例 3
5 4 hwwr eahe lroy lswo oaau
输出样例 3
0
输入样例 4
5 6 #girls ##areb #.#est #..#!! #####!
输出样例 4
7