def allChars(a):
return sum([ord(_) for _ in a])
#======================
things=raw_input()#'stol stul dverj krovatj kompjuter'
corrupts=raw_input()#'vatjkrotulsredvjlostkompterju'
print 'Initial:'
print things
print corrupts,'\n-----------------------------\n'
thingArr=things.split(' ')
thingLen=list(set([len(_) for _ in thingArr]))
thingDict={allChars(_):[0,_] for _ in thingArr}
i=0;j=0
while i<len(corrupts):
for l in thingLen:
if allChars(corrupts[i:i+l]) in thingDict:
thingDict[allChars(corrupts[i:i+l])][0]=j
i+=l;j+=1
break
thingResult=[_[1] for _ in sorted(thingDict.values())]
i=0;corruptResult=[]
for l in [len(_) for _ in thingResult]:
corruptResult.append(corrupts[i:i+l])
i+=l
print 'Final:'
print ' '.join(thingResult)
print ' '.join(corruptResult)