def solution(msg):
msgindex = {chr(i):i-64 for i in range(65,91)}
answer = []
add = 27
i = 0
while i != len(msg):
jj = list(msgindex.keys())
jj.sort(key=lambda x:len(x))
j = len(jj[-1])
if i+j >= len(msg):
k = len(msg)
else:
k = i+j
while True:
if msg[i:k] not in msgindex:
k-=1
else:
break
if msg[i:k] in msgindex:
answer.append(msgindex[msg[i:k]])
c = msg[i:k+1]
if c not in msgindex:
msgindex[c] = add
add += 1
i = k
return answer