fork download
  1. from itertools import*;e=enumerate;f=lambda l:[[[' ']*(max(j for k,(j,c)in o[1:])-i)+l[k][:i]+[c.upper()]+l[k][i+1:]for k,(i,c)in o[1:]]for p in product(*[list(e(w))for w in l])for o in permutations(list(e(p)))if[c for k,(i,c)in o[1:]]==l[o[0][0]]][0]
  2. tests=[
  3. [['t','o','g','e','t','h','e','r'],['t','e','a','m'],['e','v','e','r','y','o','n','e'],['a','c','h','i','e','v','e','s'],['m','o','r','e']],
  4. [['a','a','a'],['a','a','a'],['a','a','a'],['a','a','a']],
  5. [['a','a','a'],['a','a','a'],['a','a','b'],['b','a','a']],
  6. [['l','i','v','e'],['e','v','e','r','y'],['l','o','v','e'],['v','e','r','y'],['o','h','i','o']],
  7. [['c','o','w'],['o','f'],['f','o','x']],
  8. [['l','a','t','e'],['b','a','l','l','r','o','o','m'],['a','n','v','i','l'],['t','o'],['h','e','a','d']]
  9. ]
  10. for test in tests:
  11. print '\n'.join(''.join(r) for r in f(test))
  12. print
Success #stdin #stdout 0.57s 9160KB
stdin
Standard input is empty
stdout
Together
Everyone
Achieves
More

Aaa
Aaa
Aaa

Aaa
Aaa
Baa

Live
Ohio
Very
Every

cOw
 Fox

anviL
   bAllroom
    To
   hEad