情報オリンピック日本委員会では,台湾大会に向かう選手を応援するために新しい JOI 旗を作成することにした.
JOI 旗は,正方形が縦に 行,横に 列並んだ形をしており,各正方形には J, O, I のいずれかの文字が 1 つずつ書かれている.
:::align{center}

JOI 旗の例
:::
情報オリンピック日本委員会は JOI 旗とは別に JOI 紋章 というものを決めている.JOI 紋章 は,正方形が縦に 行,横に 列並んだ形をしており,各正方形には J, O, I のいずれかの文字が 1 つずつ書かれている.
:::align{center}

JOI 紋章の例
:::
JOI 旗に含まれる JOI 紋章 の個数とは,JOI 旗に含まれる縦 行,横 列の領域のうち,その領域の J, O, I の配置が JOI 紋章 と(回転や裏返しをせずに)一致しているものの個数のことである.条件を満たす縦 行,横 列の領域同士が重なっていてもそれらを別々に数えるものとする.
情報オリンピック日本委員会は古い JOI 旗と 1 枚の白紙を持っている.白紙は JOI 旗を構成する正方形 1 個分の大きさで,J, O, I のうち好きな 1 文字を書き込むことができる.情報オリンピック日本委員会は以下のいずれか 1 つの操作をして,新しい JOI 旗を作成することにした.
- 古い JOI 旗に対して何も操作せず,そのまま新しい JOI 旗とする.白紙は使用しない.
- 白紙に 1 文字書き込み,古い JOI 旗のいずれかの正方形に重ねて貼り付けることで古い JOI 旗のうち 1 箇所を変更する.変更後の JOI 旗を新しい JOI 旗とする.
情報オリンピック日本委員会は新しい JOI 旗に含まれる JOI 紋章 の個数をできるだけ多くしたいと思っている.あなたは新しい JOI 旗に含まれる JOI 紋章 の個数の最大値を求めることになった.
課題
古い JOI 旗と JOI 紋章 の情報が与えられたとき,新しい JOI 旗に含まれる JOI 紋章 の個数の最大値を求めるプログラムを作成せよ.