f = lambda s,k:`sorted(s,key=lambda c:`k.index(3-ord(c)/32)`+c)`[2::5]
for (s,k) in ('a1B2c3', [2, 0, 1]), ('aAaA909UuHWw9gh2', [2, 1, 0]), ('6Bx43', [2, 1, 0]), ('jfjf33g', [1, 0, 2]), ('AbC13', [0, 2, 1]), ('Qfl0l', [1, 2, 0]), ('9870abcABC', [0, 1, 2]), ('test123', [0, 2, 1]), ('WHAT', [2, 0, 1]), ('WhAt', [2, 0, 1]), ('102BACbac', [1, 0, 2]):
print f(s,k)
ZiA9IGxhbWJkYSBzLGs6YHNvcnRlZChzLGtleT1sYW1iZGEgYzpgay5pbmRleCgzLW9yZChjKS8zMilgK2MpYFsyOjo1XQoKZm9yIChzLGspIGluICgnYTFCMmMzJywgWzIsIDAsIDFdKSwgKCdhQWFBOTA5VXVIV3c5Z2gyJywgWzIsIDEsIDBdKSwgKCc2Qng0MycsIFsyLCAxLCAwXSksICgnamZqZjMzZycsIFsxLCAwLCAyXSksICgnQWJDMTMnLCBbMCwgMiwgMV0pLCAoJ1FmbDBsJywgWzEsIDIsIDBdKSwgKCc5ODcwYWJjQUJDJywgWzAsIDEsIDJdKSwgKCd0ZXN0MTIzJywgWzAsIDIsIDFdKSwgKCdXSEFUJywgWzIsIDAsIDFdKSwgKCdXaEF0JywgWzIsIDAsIDFdKSwgKCcxMDJCQUNiYWMnLCBbMSwgMCwgMl0pOgoJcHJpbnQgZihzLGsp
KCdhMUIyYzMnLCBbMiwgMCwgMV0pLCAoJ2FBYUE5MDlVdUhXdzlnaDInLCBbMiwgMSwgMF0pLCAoJzZCeDQzJywgWzIsIDEsIDBdKSwgKCdqZmpmMzNnJywgWzEsIDAsIDJdKSwgKCdBYkMxMycsIFswLCAyLCAxXSksICgnUWZsMGwnLCBbMSwgMiwgMF0pLCAoJzk4NzBhYmNBQkMnLCBbMCwgMSwgMl0pLCAoJ3Rlc3QxMjMnLCBbMCwgMiwgMV0pLCAoJ1dIQVQnLCBbMiwgMCwgMV0pLCAoJ1doQXQnLCBbMiwgMCwgMV0pLCAoJzEwMkJBQ2JhYycsIFsxLCAwLCAyXSk=
('a1B2c3', [2, 0, 1]), ('aAaA909UuHWw9gh2', [2, 1, 0]), ('6Bx43', [2, 1, 0]), ('jfjf33g', [1, 0, 2]), ('AbC13', [0, 2, 1]), ('Qfl0l', [1, 2, 0]), ('9870abcABC', [0, 1, 2]), ('test123', [0, 2, 1]), ('WHAT', [2, 0, 1]), ('WhAt', [2, 0, 1]), ('102BACbac', [1, 0, 2])