MESSAGES = [
'obo boo mbb obm bom bbm mmm bmo mbb obm bob omb mmo',
'omo bbm mbb obo omo boo bbm obo bbm obb bmo obo boo bmo obm bmo omo bmo mbb obb bmm mbb mmo obm obo obb omb bmb obo mbb mob mmo obm',
'mmb bmo omm bmo mmb mmo mbb mmo bmo mom obb mob obo mob bmb mob mmb mob omm bmo obb omo obb mbb obo bmo obm omb bmb bmb bmo obm obm',
'mmo bmo omo obm omb bbo obb mob omb obo mbb mmo bmo mbb mmo obm obo bbm mmb mmb bbm obo mbb mob mmo bmb mob mmm mom mmb bmo obo bmo',
]
# all permutations of 'bmo'
REPLACEMENTS = ['bmo', 'bom', 'mob', 'mbo', 'omb', 'obm']
CONVERTERS = [
lambda x: chr(ord('a') + int(x, 3)), # forwards from a
lambda x: chr(ord('z') - int(x, 3)), # backwards from z
]
for message in MESSAGES:
attempts = [''] * (len(REPLACEMENTS) * len(CONVERTERS))
for letter in message.split(' '):
for i, r in enumerate(REPLACEMENTS):
replaced = letter.replace(r[0], '0').replace(r[1], '1').replace(r[2], '2')
for j, c in enumerate(CONVERTERS):
attempts[i * len(CONVERTERS) + j] += c(replaced)
for attempt in attempts:
print(attempt)
TUVTU0FHRVMgPSBbCiAgICAnb2JvIGJvbyBtYmIgb2JtIGJvbSBiYm0gbW1tIGJtbyBtYmIgb2JtIGJvYiBvbWIgbW1vJywKICAgICdvbW8gYmJtIG1iYiBvYm8gb21vIGJvbyBiYm0gb2JvIGJibSBvYmIgYm1vIG9ibyBib28gYm1vIG9ibSBibW8gb21vIGJtbyBtYmIgb2JiIGJtbSBtYmIgbW1vIG9ibSBvYm8gb2JiIG9tYiBibWIgb2JvIG1iYiBtb2IgbW1vIG9ibScsCiAgICAnbW1iIGJtbyBvbW0gYm1vIG1tYiBtbW8gbWJiIG1tbyBibW8gbW9tIG9iYiBtb2Igb2JvIG1vYiBibWIgbW9iIG1tYiBtb2Igb21tIGJtbyBvYmIgb21vIG9iYiBtYmIgb2JvIGJtbyBvYm0gb21iIGJtYiBibWIgYm1vIG9ibSBvYm0nLAogICAgJ21tbyBibW8gb21vIG9ibSBvbWIgYmJvIG9iYiBtb2Igb21iIG9ibyBtYmIgbW1vIGJtbyBtYmIgbW1vIG9ibSBvYm8gYmJtIG1tYiBtbWIgYmJtIG9ibyBtYmIgbW9iIG1tbyBibWIgbW9iIG1tbSBtb20gbW1iIGJtbyBvYm8gYm1vJywKXQoKIyBhbGwgcGVybXV0YXRpb25zIG9mICdibW8nClJFUExBQ0VNRU5UUyA9IFsnYm1vJywgJ2JvbScsICdtb2InLCAnbWJvJywgJ29tYicsICdvYm0nXQoKQ09OVkVSVEVSUyA9IFsKICAgIGxhbWJkYSB4OiBjaHIob3JkKCdhJykgKyBpbnQoeCwgMykpLCAgIyBmb3J3YXJkcyBmcm9tIGEKICAgIGxhbWJkYSB4OiBjaHIob3JkKCd6JykgLSBpbnQoeCwgMykpLCAgIyBiYWNrd2FyZHMgZnJvbSB6Cl0KCmZvciBtZXNzYWdlIGluIE1FU1NBR0VTOgogICAgYXR0ZW1wdHMgPSBbJyddICogKGxlbihSRVBMQUNFTUVOVFMpICogbGVuKENPTlZFUlRFUlMpKQogICAgZm9yIGxldHRlciBpbiBtZXNzYWdlLnNwbGl0KCcgJyk6CiAgICAgICAgZm9yIGksIHIgaW4gZW51bWVyYXRlKFJFUExBQ0VNRU5UUyk6CiAgICAgICAgICAgIHJlcGxhY2VkID0gbGV0dGVyLnJlcGxhY2UoclswXSwgJzAnKS5yZXBsYWNlKHJbMV0sICcxJykucmVwbGFjZShyWzJdLCAnMicpCiAgICAgICAgICAgIGZvciBqLCBjIGluIGVudW1lcmF0ZShDT05WRVJURVJTKToKICAgICAgICAgICAgICAgIGF0dGVtcHRzW2kgKiBsZW4oQ09OVkVSVEVSUykgKyBqXSArPSBjKHJlcGxhY2VkKQogICAgZm9yIGF0dGVtcHQgaW4gYXR0ZW1wdHM6CiAgICAgICAgcHJpbnQoYXR0ZW1wdCkKIAo=