Problem
All'inizio del XVIII secolo, un gruppo di esploratori europei arrivò su un'isola abitata da un gruppo di tribù che non erano mai entrate in contatto con rappresentanti della civiltà europea.
Per stabilire con successo i contatti con gli indigeni, il capo del gruppo prevede di fare un regalo al capo di ogni tribù che incontra. A tal fine, portò una lunga catena di vetro, simile a pietre preziose.
Rappresentiamo la stringa come una stringa s, composta da lettere minuscole dell'alfabeto inglese, dove ogni lettera indica il tipo di pezzo di vetro nella posizione corrispondente.
I ricercatori taglieranno la catena in alcuni frammenti, quindi consegneranno esattamente un frammento al capo di ogni tribù incontrata dal gruppo. Il responsabile della ricerca ha deciso di dividere la catena in frammenti secondo le seguenti regole:
- Per non perdere molto tempo a tagliare, ogni frammento dovrebbe essere un gruppo di pezzi di vetro adiacenti nella catena, cioè una sottostringa della stringa s.
- Tutti i pezzi di vetro devono essere utilizzati, cioè ogni pezzo di vetro deve essere incluso esattamente in un frammento.
- Poiché i ricercatori non sanno come gli aborigeni valuteranno certi tipi di vetro, vogliono che ogni capo ottenga lo stesso set di bicchieri indipendentemente dall'ordine. In altre parole, per qualsiasi tipo di vetro, il numero di vetri di questo tipo deve essere lo stesso in ciascuno dei frammenti.
- I ricercatori non sanno quante tribù vivono sull'isola, quindi il numero di frammenti preparati dovrebbe essere il più grande possibile.
Aiuta il manager a determinare il numero massimo di frammenti che possono essere ottenuti.
Inserimento:
La prima riga contiene la stringa s (1 <= |s| <= 5000000).
Uscita:
Stampa un singolo numero: il numero massimo possibile di frammenti in cui i ricercatori possono tagliare la catena che hanno senza violare nessuna delle condizioni formulate dal capogruppo.
Esempi:
Input |
Uscita |
abbabbbab |
3 |
aab |
1 |
Spiegazioni:
Nel primo esempio, i ricercatori possono spezzare la catena 'abbabbbab' frammenti 'abb', 'abb', 'bab', quindi il capo di ogni tribù che incontra riceverà un bicchiere di tipo 'a' e due pezzi di 'b'.
Nel secondo esempio, la stringa non può essere suddivisa in più di un frammento della catena, osservando tutte le condizioni.