[JSOI2016]扭动的回文串
题号:NC20224
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

JYY有两个长度均为 N 的字符串 AB。 一个“扭动字符串 S(i,j,k)A 中的第 i 个字符到第 j 个字符组成的子串 与 B 中的第 j 个字符到第 k 个字符组成的子串拼接而成。
比如,若 A='XYZ’,B='UVW’,则扭动字符串 S (1,2,3)='XYVW’。
JYY定义一个“扭动的回文串”为如下情况中的一个:
1.A 中的一个回文串;
2.B 中的一个回文串;
3.或者某一个回文的扭动字符串 S(i,j,k)
现在JYY希望找出最长的扭动回文串。

输入描述:

第一行包含一个正整数 N
第二行包含一个长度为 N 的由大写字母组成的字符串 A
第三行包含一个长度为 N 的由大写字母组成的字符串 B

输出描述:

输出的第一行一个整数,表示最长的扭动回文串。
示例1

输入

复制
5
ABCDE
BAECB

输出

复制
5

说明

最佳方案中的扭动回文串如下所示(不在回文串中的字符用.表示):
.BC..
..ECB
示例2

输入

复制
1
A
A

输出

复制
2

说明

样例2、3、4为牛客补充数据,非省选原数据,此样例已加入到判题的测试数据中。(2022.9.6更新)
示例3

输入

复制
2
ZZ
AZ

输出

复制
3
示例4

输入

复制
1
E
A

输出

复制
1