def splurth(element):
full_name = element.lower()
for x in range(len(full_name)):
for y in range(x+1, len(full_name)):
yield full_name[x].upper() + full_name[y].lower()
def blurth(element, prefix=''):
full_name = element.lower()
for x in range(len(full_name)):
yield (prefix + full_name[x]).title()
for name in blurth(full_name[x+1:], prefix + full_name[x]):
yield name.title()
def verify_splurth(element, symbol):
return symbol in splurth(element)
def first_splurth(element):
return sorted(splurth(element))[0]
print('=== MAIN CHALLENGE ===')
print(verify_splurth('Spenglerium', 'Ee'))
print(verify_splurth('Zeddemorium', 'Zr'))
print(verify_splurth('Venkmine', 'Kn'))
print(verify_splurth('Stantzon', 'Zt'))
print(verify_splurth('Melintzum', 'Nn'))
print(verify_splurth('Tullium', 'Ty'))
print('=== BONUS 1 ===')
print(first_splurth('Gozerium'))
print(first_splurth('Slimyrine'))
print('=== BONUS 2 ===')
print(len(set(splurth('Zuulon'))))
print('=== BONUS 3 ===')
print(len(set(blurth('Zuulon'))))
ZGVmIHNwbHVydGgoZWxlbWVudCk6CiAgICBmdWxsX25hbWUgPSBlbGVtZW50Lmxvd2VyKCkKICAgIGZvciB4IGluIHJhbmdlKGxlbihmdWxsX25hbWUpKToKICAgICAgICBmb3IgeSBpbiByYW5nZSh4KzEsIGxlbihmdWxsX25hbWUpKToKICAgICAgICAgICAgeWllbGQgZnVsbF9uYW1lW3hdLnVwcGVyKCkgKyBmdWxsX25hbWVbeV0ubG93ZXIoKQoKZGVmIGJsdXJ0aChlbGVtZW50LCBwcmVmaXg9JycpOgogICAgZnVsbF9uYW1lID0gZWxlbWVudC5sb3dlcigpCiAgICBmb3IgeCBpbiByYW5nZShsZW4oZnVsbF9uYW1lKSk6CiAgICAgICAgeWllbGQgKHByZWZpeCArIGZ1bGxfbmFtZVt4XSkudGl0bGUoKQogICAgICAgIGZvciBuYW1lIGluIGJsdXJ0aChmdWxsX25hbWVbeCsxOl0sIHByZWZpeCArIGZ1bGxfbmFtZVt4XSk6CiAgICAgICAgICAgIHlpZWxkIG5hbWUudGl0bGUoKQoKZGVmIHZlcmlmeV9zcGx1cnRoKGVsZW1lbnQsIHN5bWJvbCk6CiAgICByZXR1cm4gc3ltYm9sIGluIHNwbHVydGgoZWxlbWVudCkKCmRlZiBmaXJzdF9zcGx1cnRoKGVsZW1lbnQpOgogICAgcmV0dXJuIHNvcnRlZChzcGx1cnRoKGVsZW1lbnQpKVswXQoKcHJpbnQoJz09PSBNQUlOIENIQUxMRU5HRSA9PT0nKQpwcmludCh2ZXJpZnlfc3BsdXJ0aCgnU3BlbmdsZXJpdW0nLCAnRWUnKSkKcHJpbnQodmVyaWZ5X3NwbHVydGgoJ1plZGRlbW9yaXVtJywgJ1pyJykpCnByaW50KHZlcmlmeV9zcGx1cnRoKCdWZW5rbWluZScsICdLbicpKQpwcmludCh2ZXJpZnlfc3BsdXJ0aCgnU3RhbnR6b24nLCAnWnQnKSkKcHJpbnQodmVyaWZ5X3NwbHVydGgoJ01lbGludHp1bScsICdObicpKQpwcmludCh2ZXJpZnlfc3BsdXJ0aCgnVHVsbGl1bScsICdUeScpKQoKcHJpbnQoJz09PSBCT05VUyAxID09PScpCnByaW50KGZpcnN0X3NwbHVydGgoJ0dvemVyaXVtJykpCnByaW50KGZpcnN0X3NwbHVydGgoJ1NsaW15cmluZScpKQoKcHJpbnQoJz09PSBCT05VUyAyID09PScpCnByaW50KGxlbihzZXQoc3BsdXJ0aCgnWnV1bG9uJykpKSkKCnByaW50KCc9PT0gQk9OVVMgMyA9PT0nKQpwcmludChsZW4oc2V0KGJsdXJ0aCgnWnV1bG9uJykpKSk=