Roland is a high-school math teacher. Every day, he gets hundreds of papers from his students. For each paper, he carefully chooses a letter grade: 'A', 'B' or 'C'. (Roland's students are too smart to get lower grades like a 'D' or an 'F'). Once the grades are all decided, Roland passes the papers onto his assistant - you. Your job is to stamp the correct grade onto each paper.
You have a low-tech but functional letter stamp that you use for this. To print out a letter, you attach a special plate to the front of the stamp corresponding to that letter, dip it in ink, and then apply it to the paper.
The interesting thing is that instead of removing the plate when you want to switch letters, you can just put a new plate on top of the old one. In fact, you can think of the plates on the letter stamp as being a stack, supporting the following operations:
Given a sequence of letter grades ('A', 'B', and 'C'), how many operations do you need to print the whole sequence in order? The stack begins empty, and you must empty it when you are done. However, you have unlimited supplies of each kind of plate that you can use in the meantime.
For example, if you wanted to print the sequence "ABCCBA", then you could do it in 12 operations, as shown below:
The first line of the input file contains the number of cases, T(1<=T<=20). T test cases follow, one per line. Each of these lines contains a single string S with length no more than 3000, representing the sequence of characters that you want to print out in order. S is a non-empty string containing only the letters 'A', 'B', and 'C'.
For each test case, output one line containing "Case #x: N", where x is the case number (starting from 1) and N is the minimum number of stack operations required to print out S.
2 ABCCBA AAABAAB
Case #1: 12 Case #2: 13
Migrated from old NTUJ.
GCJ2010 Final pA
No. | Testdata Range | Score |
---|