import sys translate = { '._': 'A', '_...': 'B', '_._.': 'C', '_..': 'D', '.': 'E', '.._.': 'F', '__.': 'G', '....': 'H', '..': 'I', '.___': 'J', '_._': 'K', '._..': 'L', '__': 'M', '_.': 'N', '___': 'O', '.__.': 'P', '__._': 'Q', '._.': 'R', '...': 'S', '_': 'T', '.._': 'U', '..._': 'V', '.__': 'W', '_.._': 'X', '_.__': 'Y', '__..': 'Z', } def mogrificate(l, your_index, r, sofars=None): if sofars is None: sofars = [] for i in xrange(MIN_LEN, MAX_LEN + 1): substr = ''.join(l[your_index:i]) if substr in translate: current_letter = translate[substr] sofars.append(current_letter) print sofars MIN_LEN = min(len(k) for k in translate) MAX_LEN = max(len(k) for k in translate) letters = [i for i in sys.stdin.readline().strip()] results = [] mogrificate(letters, 0, results)