문자로 이루어진 수열을 생각한다. 수열 x1,x2,…,xn 에서 어떤 연속한 블록 바로 뒤에 그것과 똑같은 블록이 이어지면, 이 수열은 말더듬(stammer) 을 포함한다고 한다. 정확히는, 1≤i<j 이고 2j−i−1≤n 인 두 첨자 i, j 가 존재하여
xi=xj,xi+1=xj+1,…,xj−1=x2j−i−1
이 성립하는 경우를 말한다. 다시 말해, 비어 있지 않은 어떤 단어 w 에 대해 ww 꼴의 부분 문자열(제곱)을 포함하는 경우이다. 이러한 반복 블록이 하나도 없는 수열을 말더듬이 없는 수열이라고 부른다.
길이가 n 인 말더듬이 없는 수열을, 되도록 적은 종류의 문자만으로 만들고자 한다.
몇 가지 사실:
필요한 문자 종류의 최소 개수를 구하여라.
표준 입력의 첫째 줄에 양의 정수 n (1≤n≤10,000,000) 이 주어진다. 만들고자 하는 수열의 길이이다.
길이가 n 인 말더듬이 없는 수열에 반드시 나타나야 하는 서로 다른 문자의 최소 개수 k 를 한 줄에 출력한다.