    def mkword(w, b):
        if not w: return []

        c,w = w[0],w[1:]
        for i in range(len(b)):
            if c in b[i]:
                m = mkword(w, b[0:i] + b[i+1:])
                if m != None: return [b[i]] + m

    def abc(w, blk):
        return mkword(w.upper(), [a.upper() for a in blk])

    blocks = 'BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM'.split()

    for w in ", A, bark, book, treat, common, SQUAD, conFUsEd".split(', '):
        print '\'' + w + '\'' + ' ->', abc(w, blocks)