Problem
Au début du XVIIIe siècle, un groupe d'explorateurs européens arriva sur une île habitée par un groupe de tribus qui n'avaient jamais été en contact avec des représentants de la civilisation européenne.
Pour réussir à nouer des contacts avec les indigènes, le chef du groupe prévoit d'offrir un cadeau au chef de chaque tribu qu'il rencontre. À cette fin, il a apporté une longue chaîne de verre, semblable à des pierres précieuses.
Représentons la chaîne comme une chaîne s, composée de petites lettres de l'alphabet anglais, où chaque lettre signifie le type de morceau de verre à la position correspondante.
Les chercheurs vont couper la chaîne en quelques fragments, puis remettre exactement un fragment au chef de chaque tribu rencontrée par le groupe. Le responsable de la recherche a décidé de scinder la chaîne en fragments selon les règles suivantes :
- Afin de ne pas passer beaucoup de temps à couper, chaque fragment doit être un groupe de morceaux de verre adjacents dans la chaîne, c'est-à-dire une sous-chaîne de la chaîne s.
- Tous les morceaux de verre doivent être utilisés, c'est-à-dire que chaque morceau de verre doit être inclus dans exactement un fragment.
- Parce que les chercheurs ne savent pas comment les aborigènes évalueront certains types de verre, ils veulent que chaque chef obtienne le même ensemble de verre sans tenir compte de l'ordre. Autrement dit, pour tout type de verre, le nombre de verre de ce type doit être le même dans chacun des fragments.
- Les chercheurs ne savent pas combien de tribus vivent sur l'île, donc le nombre de fragments préparés doit être aussi grand que possible.
Aidez le responsable à déterminer le nombre maximum de fragments pouvant être obtenus.
Saisie :
La première ligne contient la chaîne s (1 <= |s| <= 5000000).
Sortie :
Imprimez un seul numéro - le nombre maximum possible de fragments dans lesquels les chercheurs peuvent couper la chaîne qu'ils ont sans violer aucune des conditions formulées par le chef de groupe.
Exemples :
Entrée |
Sortie |
abbabbab |
3 |
aabb |
1 |
Explications :
Dans le premier exemple, les chercheurs peuvent briser la chaîne "abbabbbab" fragments "abb", "abb", "bab", puis le chef de chaque tribu rencontré recevra un verre de type "a" et deux morceaux de "b".
Dans le deuxième exemple, la chaîne ne peut pas être divisée en plus d'un fragment de la chaîne, en respectant toutes les conditions.