#CF1948D. 串联重复串?

    ID: 6576 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>搜索枚举字符串其他双指针扫描*1700

串联重复串?

D. 串联重复串?

单个测试点时间限制22单个测试点内存限制256256 兆字节

给定一个字符串 ss,由小写英文字母和问号 ? 组成。

串联重复串是指一个长度为偶数的字符串,满足它的前半部分与后半部分完全相同

如果字符串 aa 可以通过删除 bb 开头若干个(可以是 00 个)字符和结尾若干个(可以是 00 个)字符得到,那么 aabb 的一个子串。

你的任务是将每个问号替换成某个小写英文字母,使得字符串中最长的串联重复子串的长度尽可能大。


输入格式

第一行包含一个整数 tt1t10001\le t\le 1000)—— 测试用例数量。

每个测试用例占一行,包含一个字符串 ss1s50001\le |s|\le 5000),仅由小写字母和/或问号组成。

所有测试用例的字符串总长度不超过 50005000


输出格式

对于每个测试用例,输出一个整数 —— 将问号替换后能得到的最长串联重复子串的最大可能长度

如果无法构造出任何串联重复子串,输出 00


样例输入

4
zaabaabz
?????
code?????s
codeforces

样例输出

6
4
10
0