#CSPX20232. 回文字符串

回文字符串

当前没有测试数据。

Background

作为一个新手,小明刚学了回文字符串,知道了一个字符串如果关于中心对称,则该字符串为回文字符串。

于是他自己就发明了属于他自己的回文字符串,即符合以下条件的字符串 S 是回文字符串:

首先把字符串 S 分割成 n 个子串 S1_1,S2_2,…,Sn_n,即 S1_1 +S2_2+…+Sn_n=S(其中 + 为字符串拼接操作)。

分割成的子串数量需要大于 1,且不能为空,即 n>1 且 Si_i为非空子串。

对于所有的 i∈[1,n] 有:要么 Si_i 与 Sn_n_-i_i+_+1_1相等,要么Si_i 与 Sn_n_-i_i+_+1_1互为回文。(补充说明:字符串 A 和 B 互为回文指 A 倒过来与 B 相等,反之亦然。举例说明:abc 与 cba 互为回文。)

给定一个字符串 S,请你帮助小明确定该字符串是否是在上述规则下的回文字符串。

如果是,他还想将字符串 S 分成尽可能多的子串。

Format

Input

一行一个字符串 S。

Output

如果不能满足要求,输出一行一个字符串 NO;否则,输出两行,第一行一个字符串 YES,第二行一个整数 n 表示最大的子串数量。

Samples

abcababcba
YES 
8

Limitation

对于 30% 的数据,1≤∣S∣≤10;(其中 S 为给定字符串的长度)

对于 60% 的数据,1≤∣S∣≤103^3

其中有 30% 的数据,输入的字符串为回文字符串;

对于 100% 的数据,1≤∣S∣≤104^4,保证输入的字符串全为小写字母。