만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

문화 접촉

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

요약
문자열을 여러 부분 문자열로 나누되, 모든 부분 문자열의 글자별 개수가 같아지도록 할 때 나눌 수 있는 최대 개수를 구합니다.
난이도

보통10점 중 6점

유형
문자열, 누적 합, 정수론
정답자
아직 제출이 없습니다

문제

16세기 초, 유럽 탐험대 한 무리가 유럽인을 한 번도 본 적 없는 여러 부족이 사는 섬에 도착했다.

섬 주민과 우호 관계를 맺기 위해 탐험대장은 길에서 만나는 각 부족의 우두머리에게 선물을 주려 한다. 대장은 보석처럼 보이는 유리 조각들이 길게 이어진 사슬을 가져왔다. 이 사슬을 소문자 영어 알파벳으로 이루어진 문자열 ss로 본다. 각 문자는 해당 위치에 있는 유리 조각의 종류를 뜻한다.

탐험대는 사슬을 여러 조각으로 자르고, 만나는 부족의 우두머리마다 조각을 정확히 하나씩 준다. 대장은 아래 규칙에 따라 사슬을 나눈다.

  • 각 조각은 연속된 유리 조각들로, 즉 ss의 부분 문자열이다.
  • 모든 유리 조각을 사용하며, 각 유리 조각은 정확히 하나의 조각에 포함된다.
  • 모든 부족의 우두머리는 순서를 무시했을 때 같은 유리 조각 구성을 받는다. 즉, 유리 조각 종류마다 각 조각에 들어 있는 개수가 모두 같아야 한다.

부족의 수는 알 수 없으므로, 탐험대는 조각의 수가 가능한 한 많기를 원한다.

이 규칙을 어기지 않고 사슬을 최대 몇 개의 조각으로 나눌 수 있는지 구하라.

입력

입력은 한 줄이며, 소문자 영어 알파벳으로 이루어진 비어 있지 않은 문자열 ss가 주어진다. ss의 길이는 5⋅1065 \cdot 10^6을 넘지 않는다.

출력

규칙을 어기지 않고 탐험대가 사슬을 나눌 수 있는 조각의 최대 개수를 한 개의 수로 출력하라.

힌트

첫 번째 경우에서 탐험대는 사슬 abbabbbab을 abb, abb, bab 조각으로 나눌 수 있다. 이때 각 부족의 우두머리는 종류 a 유리 조각 하나와 종류 b 유리 조각 두 개를 받는다.

두 번째 경우에서는 사슬을 두 조각 이상으로 나눌 수 없다.

예제2

  1. 예제 1

    입력
    abbabbbab
    
    예상 출력
    3
    
  2. 예제 2

    입력
    aabb
    
    예상 출력
    1