#codefestival2017qualcd. [code_festival_2017_qualc_d]Yet Another Palindrome Partitioning

[code_festival_2017_qualc_d]Yet Another Palindrome Partitioning

题目描述

我们有一个由小写英文字母组成的字符串 ss。Snuke 将 ss 分成一些非空子串。记所得到的子串依次为 s1s_1, s2s_2, ......, sNs_N(这里,满足 s=s1+s2+...+sNs = s_1 + s_2 + ... + s_N)。Snuke 希望满足以下条件:

  • 对于每个 ii1iN1 \leq i \leq N),都可以对 sis_i 中的字符进行排列,得到一个回文串。

找出满足条件时 NN 的最小可能值。

约束条件

  • 1s2×1051 \leq |s| \leq 2 \times 10^5
  • ss 由小写英文字母组成。

输入

输入从标准输入中按以下格式给出:

ss

输出

当满足条件的分割存在时,请输出 NN 的最小可能值。


示例输入1

aabxyyzz

示例输出1

2

一种可行方案是将 ss 分成 aabxyyzz = aab + xyyzz。这里,aab 可以排列成回文串 abaxyyzz 可以排列成回文串 zyxyz


示例输入2

byebye

示例输出2

1

byebye 可以排列成回文串 byeeyb


示例输入3

abcdefghijklmnopqrstuvwxyz

示例输出3

26

示例输入4

abcabcxabcx

示例输出4

3

一种可行方案是将 ss 分成 abcabcxabcx = a + b + cabcxabcx