#joi2019hoa. [joi2019ho_a]勇者ビ太郎 (Bitaro the Brave)

[joi2019ho_a]勇者ビ太郎 (Bitaro the Brave)

2019-ho-t1-fig01.jpg

勇者的比太郎将面对魔王。

比太郎在一个 HH 行,WW 列的方格上放置了宝石(Jewel),宝珠(Orb)和金块(Ingot),并打算通过释放魔法来攻击魔王。以下,用 (i,j)(i, j) 表示从上到下第 ii 行(1iH1 \leqq i \leqq H),从左到右第 jj 列(1jW1 \leqq j \leqq W)的方格。

现在,比太郎在每个方格中放置了这三种物品中的一种。他打算要释放魔法,但是这个魔法的威力取决于方格中宝石、宝珠和金块的摆放位置。具体来说,符合以下条件的整数对 (i,j,k,l)(i, j, k, l)1i<kH1 \leqq i < k \leqq H1j<lW1 \leqq j < l \leqq W)的数量就是魔法的威力。

条件:方格 (i,j)(i, j) 中有宝石,方格 (i,l)(i, l) 中有宝珠,方格 (k,j)(k, j) 中有金块。

比太郎对这个魔法的威力很感兴趣。

给定方格中宝石、宝珠和金块的摆放,编写一个程序来计算比太郎释放的魔法的威力。


输入

从标准输入读取输入数据。

输入的格式如下:

HH WW S1S_1 \vdots SHS_H

SiS_i1iH1 \leqq i \leqq H)是长度为 WW 的字符串,第 jj 个字符(1jW1 \leqq j \leqq W)为 J 表示方格 (i,j)(i, j) 中有宝石,为 O 表示方格 (i,j)(i, j) 中有宝珠,为 I 表示方格 (i,j)(i, j) 中有金块。

输出

将答案输出到标准输出,只输出一个整数表示魔法的威力。


限制条件

  • 2H3,0002 \leqq H \leqq 3,000
  • 2W3,0002 \leqq W \leqq 3,000
  • SiS_i 是长度为 WW 的字符串(1iH1 \leqq i \leqq H)。
  • SiS_i 的每个字符是 JOI1iH1 \leqq i \leqq H)。

子任务

  1. (2020 分) H100H \leqq 100W100W \leqq 100
  2. (3030 分) H500H \leqq 500W500W \leqq 500
  3. (5050 分) 没有额外的限制。

输入示例 1

3 4
JOIJ
JIOO
IIII

输出示例 1

3

在这个输入示例中,满足条件的整数对 $(i, j, k, l) = (1, 1, 3, 2), (2, 1, 3, 3), (2, 1, 3, 4)$ 共有 33 个,所以答案为 33


输入示例 2

4 4
JJOO
JJOO
IIJO
IIIJ

输出示例 2

17