""" Google Code Jam Farewell Round C - Problem A Author : chaotic_iak Language: PyPy (Python 3.9.10) """ ################################################### SOLUTION def initialize_solution(): ... def solve(prev, char, now): #print(prev, now) c = ord(prev[char])-64 if prev[char] == "@": return "".join(chr(64+i) * now[i] for i in range(27)) + "@" has_more = any(now[i] > 0 for i in range(c+1, 27)) if now[c] == 0 and not has_more: return -1 if now[c]: now[c] -= 1 res = solve(prev, char+1, now) now[c] += 1 if res != -1: return prev[char] + res if not has_more: return -1 i = min(i for i in range(c+1, 27) if now[i]) now[i] -= 1 res = solve("@", 0, now) now[i] += 1 return chr(i+64) + res def main(): p, = read() if True else [100] S = read(str) if True else ["A"*i + "B"*(99-i) + "C" for i in range(100)] A = [] for s in S: inven = [0]*27 for c in s: inven[ord(c)-64] += 1 A.append(inven) ans = [] curr = "@" for a in A: nex = solve(curr, 0, a) if nex == -1: return "IMPOSSIBLE" ans.append(nex[:-1]) curr = nex write("POSSIBLE") write(*ans) ############################################### PROBLEM TYPE HAS_TESTCASES = True INTERACTIVE = False INTERACTIVE_WRONG_ANSWER = "" #################################################### HELPERS import sys def read_str(): ipt = input().strip() if INTERACTIVE and ipt == INTERACTIVE_WRONG_ANSWER: sys.exit() return ipt def read(mapping=int): ipt = input().strip() if INTERACTIVE and ipt == INTERACTIVE_WRONG_ANSWER: sys.exit() return list(map(mapping, ipt.split())) def write_str(obj, end="\n"): global OUTPUT OUTPUT.append(obj + end) def write(*obj, sep=" ", end="\n"): global OUTPUT OUTPUT.append(sep.join(map(str, obj)) + end) def flush(): global OUTPUT print("".join(OUTPUT), end="", flush=True) OUTPUT = [] def solve_testcase(): result = main() if result is not None: write(result) OUTPUT = [] initialize_solution() if HAS_TESTCASES: TOTAL_CASES = int(input()) else: TOTAL_CASES = 1 for CASE_NUMBER in range(TOTAL_CASES): write("Case #" + str(CASE_NUMBER+1) + ": ", end="") solve_testcase() flush() READ_FROM_FILE = ""