#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <iterator>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
#include <ctime>
using namespace std;
int main( ) {
// freopen("/Users/Shiva/Desktop/input.in", "r", stdin);
// freopen("/Users/Shiva/Desktop/output", "w", stdout);
int tc;
cin >> tc;
vector< int > ph;
string s;
for ( int i = 1 ; i <= tc; i++ ) {
cin >> s;
ph.clear ( ) ;
size_t f = s.find ( "Z" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "R" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "O" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "Z" ) ;
ph.push_back ( 0 ) ;
}
size_t f = s.find ( "X" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "S" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "I" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "X" ) ;
ph.push_back ( 6 ) ;
}
f = s.find ( "W" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "T" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "O" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "W" ) ;
ph.push_back ( 2 ) ;
}
f = s.find ( "G" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "I" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "H" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "T" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "G" ) ;
ph.push_back ( 8 ) ;
}
f = s.find ( "H" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "T" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "R" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "H" ) ;
ph.push_back ( 3 ) ;
}
f = s.find ( "F" ) ;
while ( f ! = string:: npos ) {
if ( s.find ( "U" ) ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "U" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "O" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "R" ) ;
s.replace ( f,1 ,"" ) ;
ph.push_back ( 4 ) ;
} else {
s.replace ( f,1 ,"" ) ;
f = s.find ( "I" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "V" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
ph.push_back ( 5 ) ;
}
f = s.find ( "F" ) ;
}
f = s.find ( "V" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "S" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "N" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "V" ) ;
ph.push_back ( 7 ) ;
}
f = s.find ( "O" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "N" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "O" ) ;
ph.push_back ( 1 ) ;
}
f = s.find ( "N" ) ;
while ( f ! = string:: npos ) {
s.replace ( f,1 ,"" ) ;
f = s.find ( "I" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "N" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "E" ) ;
s.replace ( f,1 ,"" ) ;
f = s.find ( "N" ) ;
ph.push_back ( 9 ) ;
}
sort( ph.begin ( ) ,ph.end ( ) ) ;
std:: ostringstream oss;
if ( ! ph.empty ( ) ) {
// Convert all but the last element to avoid a trailing ","
std:: copy ( ph.begin ( ) , ph.end ( ) - 1 ,
std:: ostream_iterator < int > ( oss, "," ) ) ;
// Now add the last element with no delimiter
oss << ph.back ( ) ;
}
cout << "Case #" << i<< ": " << "done" << endl;
}
return 0 ;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGN0aW1lPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgLy8gZnJlb3BlbigiL1VzZXJzL1NoaXZhL0Rlc2t0b3AvaW5wdXQuaW4iLCAiciIsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oIi9Vc2Vycy9TaGl2YS9EZXNrdG9wL291dHB1dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIGludCB0YzsKICAgIGNpbj4+dGM7CiAgICB2ZWN0b3I8aW50PnBoOwogICAgc3RyaW5nIHM7CiAgICBmb3IgKGludCBpID0gMTtpIDw9IHRjO2krKykgewoKICAgICAgICAKICAgICAgICBjaW4+PnM7CiAgICAgICAgcGguY2xlYXIoKTsKCiAgICAgICAgIHNpemVfdCBmID0gcy5maW5kKCJaIik7CiAgICAgICAgd2hpbGUoZiAhPSBzdHJpbmc6Om5wb3MpewogICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgZiA9IHMuZmluZCgiRSIpOwogICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgZiA9IHMuZmluZCgiUiIpOwogICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHMuZmluZCgiTyIpOwogICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKCiAgICAgICAgICAgIGYgPSBzLmZpbmQoIloiKTsKICAgICAgICAgICAgcGgucHVzaF9iYWNrKDApOwogICAgICAgIH0KCiAgICAgICAgc2l6ZV90IGYgPSBzLmZpbmQoIlgiKTsKICAgICAgICB3aGlsZShmICE9IHN0cmluZzo6bnBvcyl7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJTIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJJIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwoKICAgICAgICAgICAgZiA9IHMuZmluZCgiWCIpOwogICAgICAgICAgICBwaC5wdXNoX2JhY2soNik7CiAgICAgICAgfQogICAgICAgIGYgPSBzLmZpbmQoIlciKTsKICAgICAgICB3aGlsZShmICE9IHN0cmluZzo6bnBvcyl7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJUIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJPIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwoKICAgICAgICAgICAgZiA9IHMuZmluZCgiVyIpOwogICAgICAgICAgICAgICAgICAgICAgICBwaC5wdXNoX2JhY2soMik7CiAgICAgICAgfQogICAgICAgIGYgPSBzLmZpbmQoIkciKTsKICAgICAgICB3aGlsZShmICE9IHN0cmluZzo6bnBvcyl7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJJIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJIIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJUIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwoKICAgICAgICAgICAgZiA9IHMuZmluZCgiRyIpOwogICAgICAgICAgICAgICAgICAgICAgICBwaC5wdXNoX2JhY2soOCk7CiAgICAgICAgfQogICAgICAgIGYgPSBzLmZpbmQoIkgiKTsKICAgICAgICB3aGlsZShmICE9IHN0cmluZzo6bnBvcyl7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJUIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJSIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwoKICAgICAgICAgICAgZiA9IHMuZmluZCgiSCIpOwogICAgICAgICAgICAgICAgICAgICAgICBwaC5wdXNoX2JhY2soMyk7CgogICAgICAgIH0KICAgICAgICBmID0gcy5maW5kKCJGIik7CiAgICAgICAgd2hpbGUoZiAhPSBzdHJpbmc6Om5wb3MpewogICAgICAgICAgICBpZihzLmZpbmQoIlUiKSAhPSBzdHJpbmc6Om5wb3MpewogICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJVIik7CiAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgIGYgPSBzLmZpbmQoIk8iKTsKICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgIGYgPSBzLmZpbmQoIlIiKTsKICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaC5wdXNoX2JhY2soNCk7CgogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICAgICAgZiA9IHMuZmluZCgiSSIpOwogICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJWIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGgucHVzaF9iYWNrKDUpOwoKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZiA9IHMuZmluZCgiRiIpOwogICAgICAgIH0KCiAgICAgICAgZiA9IHMuZmluZCgiViIpOwogICAgICAgIHdoaWxlKGYgIT0gc3RyaW5nOjpucG9zKXsKICAgICAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICAgICAgZiA9IHMuZmluZCgiUyIpOwogICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJOIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJWIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGgucHVzaF9iYWNrKDcpOwoKICAgICAgICB9CiAgICAgICAgZiA9IHMuZmluZCgiTyIpOwogICAgICAgIHdoaWxlKGYgIT0gc3RyaW5nOjpucG9zKXsKICAgICAgICAgICAgICAgIHMucmVwbGFjZShmLDEsIiIpOwogICAgICAgICAgICAgICAgZiA9IHMuZmluZCgiTiIpOwogICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJFIik7CiAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJPIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaC5wdXNoX2JhY2soMSk7CiAgICAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmID0gcy5maW5kKCJOIik7CiAgICAgICAgd2hpbGUoZiAhPSBzdHJpbmc6Om5wb3MpewogICAgICAgICAgICAgICAgcy5yZXBsYWNlKGYsMSwiIik7CiAgICAgICAgICAgICAgICBmID0gcy5maW5kKCJJIik7CiAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgIGYgPSBzLmZpbmQoIk4iKTsKICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgIGYgPSBzLmZpbmQoIkUiKTsKICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoZiwxLCIiKTsKICAgICAgICAgICAgICAgIGYgPSBzLmZpbmQoIk4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoLnB1c2hfYmFjayg5KTsKCiAgICAgICAgfQogICAgICAgc29ydChwaC5iZWdpbigpLHBoLmVuZCgpKTsKCiAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3NzOwoKICAgICAgICBpZiAoIXBoLmVtcHR5KCkpewogICAgLy8gQ29udmVydCBhbGwgYnV0IHRoZSBsYXN0IGVsZW1lbnQgdG8gYXZvaWQgYSB0cmFpbGluZyAiLCIKICAgICAgICAgIHN0ZDo6Y29weShwaC5iZWdpbigpLCBwaC5lbmQoKS0xLAogICAgICAgIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxpbnQ+KG9zcywgIiwiKSk7CgogICAgLy8gTm93IGFkZCB0aGUgbGFzdCBlbGVtZW50IHdpdGggbm8gZGVsaW1pdGVyCiAgICAgICBvc3MgPDwgcGguYmFjaygpOwogICAgICAgICB9CiAgICAgICAgY291dDw8IkNhc2UgIyI8PGk8PCI6ICI8PCJkb25lIjw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==