字符串中不同字符的集合被称为该字符串的广义周期。例如,字符串 “aabbabb” 的广义周期是 {‘a’, ‘b’}。
真子串是指包含在字符串中且不等于字符串本身的连续子串。因此,“aabbabb” 本身不是上述示例的真子串。
极小真子串是指无法从其任一端移除字符且仍保持相同广义周期的真子串。“aabb” 是该示例的一个真子串,但它不是极小的。“ab” 是极小的。
“唯一”意味着同一极小真子串在字符串中的多次出现仅计为一次。在示例中,“ab” 出现了两次,但只计一次——因此,与整个字符串具有相同广义周期的极小真子串数量为二:“ab” 和 “ba”。
你需要编写一个程序,计算给定字符串中与原字符串具有相同广义周期的极小真子串的数量。程序的输入是一系列以文件结束符(EOF)结尾的行。每一行是一个测试用例,由字母数字字符(a–z, A–Z, 0–9)组成。大小写字母是不同的。换行符不属于测试用例字符串的一部分。测试用例字符串的长度不超过 80 个字符。
对于每一行输入,打印一行包含该输入字符串的极小真子串数量,不包含前导或尾随空格,也不包含额外的符号或前导零。
样例
输入 1
aabbabb abAB34aB3ba7 104001144 aaabcaaa a bb bd 1234567
输出 1
2 1 3 2 0 1 0 0