Matrice
Agent Sue Thomas and her son are looking for trinities in a grid. The word trinity is a neologism referring to a particular triangular (as the morpheme “tri” suggests) shape composed of cells in the grid.
Each trinity is a result of taking a square-shaped area of the cells and removing all cells that lie either above or below one of the two diagonals of the area. The diagonal may be either the main diagonal (southeast-northwest direction) or the main antidiagonal (southwest-northeast direction). A valid trinity consists of at least three grid cells and all its cells contain the same character.
Input Specification
The first input line contains two numbers \(N\) and \(M\) \((1 \leq N, M \leq 1000)\), describing the number of rows and columns in the grid, respectively. Each of next \(N\) lines contains \(M\) characters, whose ASCII codes are between \(33\) and \(126\), inclusively.
Output Specification
Output the number of different valid trinities in the input grid.
Sample Test Cases
Input
2 2
AA
Ad
Output
1
Input
5 5
#####
####.
###..
##...
#....
Output
60
Input
5 4
hwwr
eahe
lroy
lswo
oaau
Output
0
Input
5 6
#girls
##areb
#.#est
#..#!!
#####!
Output
7
Comments