勇者比太郎
题号:NC53187
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

勇者比太郎正在面对恶魔。
为了攻击恶魔,比太郎会在一个的网格上放置三种道具(分别记作J,O,I)并施放咒语。网格上往下数第i行(),左往右数第j列()的格子坐标记为(i,j)。
现在,比太郎在网格的每个格子中放置了三种道具中的一种,比太郎将施放一个咒语,其威力取决于三种道具的排列方式。具体的,威力大小等于满足以下条件的有序四元组的数量。
条件:(i,j)位置的格子上的道具为J,(i,l)位置上的道具为O,(k,j)位置上的道具为I。
比太郎想知道他的咒语的威力是多少。
请写一个程序,根据三种道具在网格上的排列,计算出咒语的威力(即满足上述条件的四元组数量)。

输入描述:

从标准输入中读取数据。
第一行包括两个整数H,W,表示网格的高度和宽度。
接下来H行,第i行给出一个W位长的字符串S_i,表示网格第i行的道具。

输出描述:

输出数据到标准输出中。
输出一行一个整数,表示比太郎的咒语的威力。
示例1

输入

复制
3 4
JOIJ
JIOO
IIII

输出

复制
3

说明

在这个样例中,3个四元组分别是(1,1,3,2),(2,1,3,3),(2,1,3,4)。
示例2

输入

复制
4 4
JJOO
JJOO
IIJO
IIIJ

输出

复制
17

备注:

对于所有输入数据,有

CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/3010