접미사 배열의 최소 문자 종류

순열로 주어진 접미사 배열을 그대로 만드는 문자열 중에서 서로 다른 문자의 개수가 가장 적은 경우 그 개수를 구한다.

어려움8문자열그리디구현정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

문자열 SSii번째 접미사는 SSii번째 글자에서 시작해 문자열 끝까지 이어지는 부분 문자열이다. 글자 번호는 0부터 센다. 예를 들어 SS = "abcde"이면 0번째 접미사는 "abcde"이고, 3번째 접미사는 "de"이다.

SS의 접미사 배열은 SS의 모든 접미사를 사전순으로 정렬한 다음, 그 순서대로 접미사 번호를 적은 배열이다. 정렬 기준은 번호가 아니라 번호에 해당하는 접미사이다. 예를 들어 SS = "abca"의 접미사 배열은 (3, 0, 1, 2)이다.

같은 접미사 배열을 만드는 문자열은 여러 개일 수 있다. 접미사 배열 (3, 0, 1, 2)는 "abca"로도 만들 수 있고 "aaba"로도 만들 수 있는데, "aaba"에 쓰인 문자는 두 종류뿐이다.

길이가 NN인 접미사 배열이 주어진다. 이 배열을 접미사 배열로 갖는 문자열 SS 가운데 SS에 쓰인 서로 다른 문자의 개수가 가장 적은 경우를 찾아, 그 개수를 구하라. 문자의 종류에는 제한이 없다.

입력

첫째 줄에 접미사 배열의 길이 NN이 주어진다. (1N501 \le N \le 50)

둘째 줄에 접미사 배열이 공백으로 구분되어 주어진다. 이 배열은 0부터 N1N-1까지의 정수를 하나씩 포함한다.

출력

주어진 접미사 배열을 만들 수 있는 문자열 SS 중에서, SS에 쓰인 서로 다른 문자의 개수의 최솟값을 한 줄에 출력한다.