디자인 공개 올림피아드
시간 제한1초메모리 제한1024 MB
길이가 주어진 n개의 문자열을 사전순으로 엄격히 증가하게 만들 때 필요한 최소 알파벳 개수를 구합니다.
문제
프로그래밍 대회를 준비하는 사람 중 상당수는 예전에 참가자였습니다. 이전 참가자는 대회의 세부 사항을 잘 알고 있어서 문제 설명을 쓰고 채점 시스템을 운영하는 등 많은 일을 맡을 수 있습니다. 그렇다면 디자이너가 대회를 준비하면 어떻게 될까요?
가상의 세계에서 Open Olympiad in Design이 열립니다. 문제는 개이며, 문제마다 담당 문제 설명 디자이너가 한 명씩 있습니다. 문제 이름을 담당하는 디자이너가 한 명, 글꼴 디자이너가 한 명 있습니다. 문제 설명 디자이너는 이미 작업을 마쳤고, 문제 이름을 위해 고정된 공간을 남겨 두었습니다. 번 문제의 이름은 정확히 글자여야 합니다.
문제 이름은 유니코드 문자로 이루어져야 하고, 서로 달라야 하며, 사전순으로 정렬되어야 합니다. 글꼴 디자이너는 모든 조건을 만족하면서 사용하는 서로 다른 글자의 수가 가능한 한 적도록 이름을 골라 달라고 요청했습니다. 문제의 순서는 바꿀 수 없습니다.
주어진 길이의 단어 개를 서로 다르고 사전순으로 정렬되게 만드는 데 필요한 서로 다른 글자의 최소 개수를 구하세요.
입력
첫째 줄에 문제의 개수 ()이 주어집니다.
둘째 줄에는 문제 이름의 길이 ()이 공백으로 구분되어 주어집니다.
출력
글꼴 디자이너가 칠해야 하는 서로 다른 글자의 최소 개수를 한 줄에 출력합니다.
참고
문자열 가 문자열 보다 사전순으로 작다는 것은, 두 문자열이 처음 다른 위치 에서 이거나, 첫 번째 문자열이 두 번째 문자열의 진접두사인 경우를 뜻합니다. 서로 다른 단어들의 나열은 각 단어가 다음 단어보다 작을 때 정렬되어 있다고 합니다.