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

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

2019-ho-t1-fig01.jpg

勇者のビ太郎は,魔王と対峙することとなった.

ビ太郎は,縦 HH 行,横 WW 列のマス目上に宝石 (Jewel),オーブ (Orb),金塊 (Ingot) を配置し,魔法を発動することによって魔王に攻撃をしようとしている.以下,マス目のうち上から ii 行目 (1leqqileqqH1 \\leqq i \\leqq H),左から jj 列目 (1leqqjleqqW1 \\leqq j \\leqq W) のマスを,マス (i,j)(i, j) と表す.

ビ太郎は今,それぞれのマスにこれら 33 種類のうち 11 個を配置した.今から魔法を発動しようとしているが,この魔法の威力はマス目上の宝石,オーブ,金塊の配置によって決まる.具体的には,次の条件を満たす整数 (i,j,k,l)(i, j, k, l) (1leqqi<kleqqH1 \\leqq i < k \\leqq H1leqqj<lleqqW1 \\leqq j < l \\leqq W) の組の個数が,魔法の威力である.

条件:マス (i,j)(i, j) には宝石が,マス (i,l)(i, l) にはオーブが,マス (k,j)(k, j) には金塊が置かれている.

ビ太郎は,この魔法の威力が気になっている.

マス目上の宝石,オーブ,金塊の配置が与えられたとき,ビ太郎が発動する魔法の威力を求めるプログラムを作成せよ.


入力

入力は以下の形式で標準入力から与えられる.

HH WW S1S_1 vdots\\vdots SHS_H

SiS_i (1leqqileqqH1 \\leqq i \\leqq H) は長さ WW の文字列で,その jj 文字目 (1leqqjleqqW1 \\leqq j \\leqq W) が J のときはマス (i,j)(i, j) に宝石が,O のときはマス (i,j)(i, j) にオーブが,I のときはマス (i,j)(i, j) に金塊が置かれていることを表す.

出力

標準出力に,魔法の威力を表す整数を 11 行で出力せよ.


制約

  • 2leqqHleqq3,0002 \\leqq H \\leqq 3\\,000
  • 2leqqWleqq3,0002 \\leqq W \\leqq 3\\,000
  • SiS_i は長さ WW の文字列である (1leqqileqqH1 \\leqq i \\leqq H).
  • SiS_i の各文字は JOI のいずれかである (1leqqileqqH1 \\leqq i \\leqq H).

小課題

  1. (2020 点) Hleqq100H \\leqq 100Wleqq100W \\leqq 100
  2. (3030 点) Hleqq500H \\leqq 500Wleqq500W \\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