loj#P2756. 「JOI 2014 Final」JOI 徽章

「JOI 2014 Final」JOI 徽章

题目描述

译自 JOI 2014 Final T1「JOI 紋章

日本信息学奥赛委员会为了应援将要去台湾参加 IOI 的选手们,打算制作一面新的 JOI 旗帜。JOI 旗帜为由 M M N N 列的 M×N M\times N 个正方形组成的图形,每个正方形里写有 J,O,I 中任一字母。

4e1fb24a3b910a7ec7aeeea54107aa41.png

日本信息学奥赛委员会还决定制作 JOI 徽章 。JOI 徽章为由 2 2 2 2 列的 4 4 个正方形组成的图形,每个正方形里写有 J,O,I 中任一字母。

1abe2afec333ee4b1.png

JOI 旗帜中所含 JOI 徽章的个数的意思是,与 JOI 徽章相同(不允许翻转或旋转)的 JOI 旗帜中的 2×2 2\times 2 区域的个数。

现在日本信息学奥赛委员会拥有一张旧的 JOI 旗帜和一张白纸。这张白纸的大小和一个构成 JOI 旗的正方形的大小相同。可以在这张白纸上写上 J,O,I 中任一字母。日本信息学奥赛委员会将进行以下任意一种操作来制作新的 JOI 旗帜。

  • 不进行任何操作,直接把旧的旗帜当新的用。不使用白纸。
  • 在白纸上写下一个字母,将白纸覆盖在旧的 JOI 旗帜的任意一个正方形上(也就是变更旧的 JOI 旗帜的一个正方形的字母)。

日本信息学奥赛委员会想让新的 JOI 旗帜所含的 JOI 徽章的数量尽可能多。请求出新的 JOI 旗帜所含的 JOI 徽章的个数的最大值。

任务

给出旧的 JOI 旗帜和 JOI 徽章的情况,请求出新的 JOI 旗帜所含的 JOI 徽章的个数的最大值。

输入格式

输入标准如下:

  • 第一行为两个以空格分开的整数 M,N M,N 。表示旧的 JOI 旗帜是由 M M N N 列的 M×N M×N 个正方形组成的图形。
  • 接下来的 M M 行,每行为含有 N N 个字符的字符串。每个字符为 J,O,I 中的一个。这 M M 行中的第 i(1iM) i(1 \leq i \leq M) 行中从左数第 j(1jN) j(1 \leq j \leq N) 个字符表示旧的 JOI 旗帜上的第 i i 行第 j j 列的正方形中所写的字符。
  • 接下来的 2 2 行,每行为含有 2 2 个字符的字符串。每个字符为 J,O,I 中的一个。这 2 2 行中的第 i(1i2) i(1 \leq i \leq 2) 行中从左数第 j(1j2) j(1 \leq j \leq 2) 个字符表示 JOI 徽章上的第 i i 行第 j j 列的正方形中所写的字符。

输出格式

输出一行一个整数:表示新的 JOI 旗帜所含的 JOI 徽章的个数的最大值。

3 5
JOIJO
IJOOO
IIJIJ
JO
IJ
3
2 6
JOJOJO
OJOJOJ
OJ
JO
2
2 2
JI
IJ
JJ
JJ
0

数据范围与提示

对于 30% 30\% 的分值:

  • M50 M \leq 50
  • N50 N \leq 50

对于 100% 100\% 的数据,满足以下条件。

  • 2M1000 2 \leq M \leq 1000
  • 2N1000 2 \leq N \leq 1000