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)