아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Проклятие Черной жемчужины

면접 대비

시간 제한1초메모리 제한1024 MB

요약
소문자와 물음표로 이루어진 문자열이 주어질 때, 물음표를 적당한 글자로 바꾸어 모든 글자가 같아질 수 있는 부분 문자열의 개수를 센다.
난이도

보통10점 중 5점

유형
문자열, 투 포인터, 슬라이딩 윈도우, 조합론
정답자
아직 제출이 없습니다

문제

Всем известно, что корабль <<Черная жемчужина>> на самом деле существует. Долгое время им командовал всем извеcтный капитан Джек Воробей. И этот корабль, вместе со своим капитаном прошел огонь, воду и медные трубы. Так же учеными установлено, что <<Черная жемчужина>> является самым быстроходным кораблем в мире. Она даже быстрее, чем <<Разящий>> и <<Летучий голландец>>, про который говорят, что он ходит быстрее ветра.

После ограбления сокровищницы на Исла де Муэрте на команду <<Чёрной Жемчужины>> легло проклятие, которое повлияло и на сам корабль: паруса корабля порвались, а само судно стал окружать жутковатый туман. Снять проклятие было достаточно сложно, и поэтому никто не стал этого делать.

В трюме корабля, на самой гнилой доске самой дальней стены, написана загадка, которая является ключом к снятию проклятия. Доска очень старая, и из-за этого некоторые буквы на ней стерлись. Согласно легендам, в загадке не было пробелов, то есть она выглядела как одно слово. Поскольку загадку восстановить уже нельзя, снять проклятие не представляется возможным. Однако, его можно попробовать смягчить.

Если верить Мудрецу, для смягчения проклятия нужно выбросить за борт большой мешок с золотом. За каждую подстроку слова-загадки, в которой, при каком-нибудь заполнении пропусков буквами, все буквы могли оказаться одинаковыми, в мешок необходимо положить одну монету.

Вам дана загадка, определите, сколько монет нужно выбросить за борт для смягчения проклятия.

입력

Во входном файле дана строка, длина которой не превышает 10610^6. Строка состоит из строчных латинских букв и знаков вопроса, обозначающих стертую букву (пропуск).

출력

Выведите одно число --- ответ на задачу.

힌트

Описанным в условии требованиям отвечают ровно шесть подстрок слова-загадки из первого примера:

  • четыре подстроки из одного символа (<<a>>, <<b>>, <<c>>, и <<?>> при заполнении пропуска произвольным символом)
  • подстрока <<b?>> при заполнении пропуска символом <<b>>
  • подстрока <<?c>> при заполнении пропуска символом <<c>>

예제2

  1. 예제 1

    입력
    ab?c
    
    예상 출력
    6
    
  2. 예제 2

    입력
    aa??b?c
    
    예상 출력
    19