from collections import defaultdict
def check_letters( s) :
d = { 'M' : 2 , 'I' : 9 , 'V' : 2 , 'F' : 2 , 'J' : 1 , 'G' : 3 , 'T' : 6 , 'D' : 4 , 'P' : 2 ,
'Q' : 1 , 'B' : 2 , 'Z' : 1 , 'H' : 2 , '_' : 2 , 'X' : 1 , 'R' : 6 , 'L' : 4 , 'N' : 6 ,
'Y' : 2 , 'E' : 12 , 'K' : 1 , 'S' : 4 , 'C' : 2 , 'A' : 9 , 'U' : 4 , 'W' : 2 , 'O' : 8 }
for c in s:
d[ c] -= 1
if d[ c] < 0 :
print ( "Invalid input. More {}'s have been taken from the bag than possible." .format ( c) )
return
d2 = defaultdict( list )
for p in [ ( v, k) for k, v in d.items ( ) ] :
d2[ p[ 0 ] ] .append ( p[ 1 ] )
for c in sorted ( d2.items ( ) , reverse= True ) :
print ( '{}: {}' .format ( c[ 0 ] , ', ' .join ( sorted ( c[ 1 ] ) ) ) )
# Test cases:
print ( '* * * * Test 1:' )
check_letters( 'PQAREIOURSTHGWIOAE_' )
print ( '\n * * * * Test 2:' )
check_letters( 'LQTOONOEFFJZT' )
print ( '\n * * * * Test 3:' )
check_letters( 'AXHDRUIOR_XHJZUQEE' )
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKCmRlZiBjaGVja19sZXR0ZXJzKHMpOgoJZCA9IHsnTSc6IDIsICdJJzogOSwgJ1YnOiAyLCAnRic6IDIsICdKJzogMSwgJ0cnOiAzLCAnVCc6IDYsICdEJzogNCwnUCc6IDIsCgknUSc6IDEsICdCJzogMiwgJ1onOiAxLCAnSCc6IDIsICdfJzogMiwgJ1gnOiAxLCAnUic6IDYsICdMJzogNCwJJ04nOiA2LCAKCSdZJzogMiwgJ0UnOiAxMiwgJ0snOiAxLCAnUyc6IDQsICdDJzogMiwgJ0EnOiA5LCAnVSc6IDQsICdXJzogMiwgJ08nOiA4fQoKCWZvciBjIGluIHM6CgkJZFtjXSAtPSAxCgkJaWYgZFtjXSA8IDA6CgkJCXByaW50KCJJbnZhbGlkIGlucHV0LiBNb3JlIHt9J3MgaGF2ZSBiZWVuIHRha2VuIGZyb20gdGhlIGJhZyB0aGFuIHBvc3NpYmxlLiIuZm9ybWF0KGMpKQoJCQlyZXR1cm4KCglkMiA9IGRlZmF1bHRkaWN0KGxpc3QpCglmb3IgcCBpbiBbKHYsaykgZm9yIGssdiBpbiBkLml0ZW1zKCldOgoJCWQyW3BbMF1dLmFwcGVuZChwWzFdKQoJCglmb3IgYyBpbiBzb3J0ZWQoZDIuaXRlbXMoKSwgcmV2ZXJzZT1UcnVlKToKCQlwcmludCgne306IHt9Jy5mb3JtYXQoY1swXSwgJywgJy5qb2luKHNvcnRlZChjWzFdKSkpKQoJCiMgVGVzdCBjYXNlczoKcHJpbnQoJyogKiAqICogVGVzdCAxOicpCmNoZWNrX2xldHRlcnMoJ1BRQVJFSU9VUlNUSEdXSU9BRV8nKQpwcmludCgnXG4qICogKiAqIFRlc3QgMjonKQpjaGVja19sZXR0ZXJzKCdMUVRPT05PRUZGSlpUJykKcHJpbnQoJ1xuKiAqICogKiBUZXN0IDM6JykKY2hlY2tfbGV0dGVycygnQVhIRFJVSU9SX1hISlpVUUVFJyk=
stdout
* * * * Test 1:
10: E
7: A, I
6: N, O
5: T
4: D, L, R
3: S, U
2: B, C, F, G, M, V, Y
1: H, J, K, P, W, X, Z, _
0: Q
* * * * Test 2:
11: E
9: A, I
6: R
5: N, O
4: D, S, T, U
3: G, L
2: B, C, H, M, P, V, W, Y, _
1: K, X
0: F, J, Q, Z
* * * * Test 3:
Invalid input. More X's have been taken from the bag than possible.