MML 악보가 주어질 때 음높이, 음 길이, 음량과 쉼표가 같은 가장 짧은 악보의 문자 수를 구합니다.
보통7동적 계획법시뮬레이션문자열아직 제출이 없습니다시간 제한5초메모리 제한512 MB오래된 BASIC 방언에는 PLAY 문이 있다. PLAY 문은 MML(Music Macro Language)로 적은 악보 문자열을 받아 그 음악을 연주한다. 이 문제에서 쓰는 MML 명령은 다음과 같다.
음표: Cn, C+n, C-n, Dn, D+n, D-n, En, ... (n은 1, 2, 4, 8, 16, 32, 64, 128과 점)
음이름은 C, D, E, F, G, A, B 일곱 개 중 하나이고, 뒤에 +(올림표)나 -(내림표)를 붙일 수 있다. C부터 B까지가 한 옥타브를 이루며 배치는 아래 그림과 같다. 각 음표가 속하는 옥타브는 그 시점의 현재 옥타브이고, 현재 옥타브는 옥타브 명령으로 정한다. 가장 낮은 옥타브(1)의 C-와 가장 높은 옥타브(8)의 B+는 연주할 수 없다.
길이 지정자는 1, 2, 4, 8, 16, 32, 64, 128 중 하나이다. 1은 온음표, 2는 2분음표, 4는 4분음표, 8은 8분음표를 뜻한다. 길이 지정자는 생략할 수 있고, 생략하면 L 명령으로 정한 기본 길이를 쓴다. 숫자 뒤에는 점을 붙일 수 있다. 점 하나는 바로 앞 길이의 절반을 더한다. 예를 들어 4.은 4에 8을 더한 길이, 즉 4의 1.5배이다. 점은 여러 개 붙일 수 있고, 점이 하나 늘 때마다 직전에 더한 길이의 절반을 다시 더한다. 4..은 4에 8과 16을 더한 길이이고, 4...은 거기에 32를 더한 길이이다. 점이 더하는 길이는 128보다 짧아질 수 없어서 128.이나 32...은 쓸 수 없다. 숫자 없이 점만 쓰면 기본 길이를 늘린다. 기본 길이가 4일 때 C.은 C4.과 같다. C4C8과 C4.은 다르다. 앞은 서로 다른 음표 두 개이고 뒤는 음표 하나이다.
쉼표: Rn (n은 1, 2, 4, 8, 16, 32, 64, 128과 점)
R 명령은 지정한 길이만큼 쉰다. 길이는 음표와 같은 방식으로 적고 생략할 수도 있다. R4R8과 R4.은 같다. 둘 다 4와 8을 합한 길이만큼 쉬기 때문이다. 이 점이 C4C8과 C4.의 관계와 다르다.
옥타브: On (n은 1부터 8까지), <, >
O 명령은 현재 옥타브를 지정한 번호로 바꾼다. >는 한 옥타브 올리고 <는 한 옥타브 내린다. 이 명령으로 옥타브를 1보다 낮게 또는 8보다 높게 만들 수는 없다. 현재 옥타브의 처음 값은 4이다.
기본 길이: Ln (n은 1, 2, 4, 8, 16, 32, 64, 128)
L 명령은 기본 길이를 정한다. 숫자는 음표와 같은 방식으로 적지만 생략할 수 없고 점을 붙일 수도 없다. 기본 길이의 처음 값은 4이다.
음량: Vn (n은 1부터 255까지)
V 명령은 현재 음량을 정한다. 값이 클수록 크게 난다. 음량의 처음 값은 100이다.

두 MML 시퀀스가 같은 음악을 연주한다는 것은 다음을 모두 만족한다는 뜻이다. 음표의 개수가 같고, 순서대로 짝지은 음표마다 소리의 높이와 길이와 음량이 같으며, 이웃한 두 음표 사이에 쉬는 길이가 같다. 소리의 높이만 같으면 되므로 옥타브 4의 B+와 옥타브 5의 C는 같은 음이다.
MML 시퀀스가 주어진다. 같은 음악을 연주하는 가장 짧은 MML 시퀀스의 글자 수를 구하라. 가장 짧은 시퀀스를 다 연주한 뒤의 옥타브, 음량, 기본 길이는 원래 시퀀스와 달라도 된다.
입력은 여러 개의 데이터 세트로 이루어진다. 각 데이터 세트는 100,000자 이하의 MML 시퀀스 한 줄이다. 위에서 설명한 명령만 나온다. 각 시퀀스에는 음표가 하나 이상 있고, 첫 음표 앞과 마지막 음표 뒤에는 쉼표가 없다.
입력의 끝은 * 한 글자만 있는 줄로 나타낸다. 이 줄은 데이터 세트가 아니므로 처리하지 않는다. 데이터 세트는 100개 이하이고, 모든 시퀀스의 길이 합은 200,000자를 넘지 않는다.
각 데이터 세트마다 Case k: n 형식으로 한 줄씩 출력한다. k는 1부터 시작하는 데이터 세트 번호이고, n은 같은 음악을 연주하는 가장 짧은 MML 시퀀스의 글자 수이다.