Problem description
Jasio uczy się alfabetu (angielskiego w
tym przypadku). Na razie nauczył się trzech pierwszych, wielkich liter
(dla przypomnienia są to kolejno: A
, B
oraz
C
).
Jasio zobaczył na murze napis i od razu zaświtał mu w głowie genialny
pomysł. Chciałby wybrać w tym napisie jak największą liczbę podciągów
ABC
. Wybrane podciągi muszą mieć parami rozłączne pozycje
(tzn. niedozwolone jest użycie tej samej pozycji literki do różnych
podciągów).
Dla przypomnienia, mając dany napis, jego podciąg może być uzyskany
poprzez zmazanie z niego pewnej liczby liter (być może żadnej, być może
wszystkich, a być może niektórych) i odczytanie pozostałych liter od
lewej do prawej. Na przykład, słowo tt
jest podciągiem
słowa tata
, podobnie jak słowo puste, słowo
tata
oraz słowo t
. Słowa atta
,
aaa
lub b
nie są podciągami słowa
tata
.
Napisz program, który: wczyta napis zapisany na murze, wyznaczy
największą liczbę rozłącznych podciągów ABC
występujących w
nim i wypisze wynik na standardowe wyjście.
Wejście
W pierwszym (jedynym) wierszu wejścia znajduje się niepusty napis składający się z wielkich liter alfabetu angielskiego. Jest to napis zapisany na murze.
Wyjście
W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna
nieujemna liczba całkowita – liczba znalezionych podciągów
ABC
zgodnie z warunkami powyżej.
Ograniczenia
Długość napisu na wejściu nie przekracza 1 000 000 znaków.
Przykład
Input | Output | Explanation |
|
|
W podanym napisie można wybrać pozycje
trzecią, piątą i siódmą oraz szóstą, ósmą i dziesiątą, aby uzyskać
łącznie dwa rozłączne podciągi |
Input | Output | |
|
|