> Given [question][1] from Hackerrank: - a password consists of exactly `n` lowercase English letters. - the password is melodious, meaning that consonants can only be next to vowels and vowels can only be next to consonants. Example: `bawahaha` - the password cannot contain the letter `y` (because it's both a consonant and vowel). - the first letter of the password can be either a vowel or consonant. [![enter image description here][2]][1] ###Given the length, `n`, of the password, print all of the possible passwords that meet the conditions above. ##Input Format The line of input contains the integer (the length of the password). ###Constraints ##Output Format Print each of the possible passwords, one per line. The order of the passwords does not matter. My Code in Python: import sys import itertools n = int(raw_input().strip()) consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'] vowels = ['a', 'e', 'i', 'o', 'u'] test4 = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z', 'a', 'e', 'i', 'o', 'u'] answer = set(itertools.product(test4, repeat=n)) for letters in answer: for j in xrange(len(letters)): flag = 1 if j != len(letters) - 1: if letters[j] in vowels and letters[j+1] in vowels: flag = 0 break if letters[j] in consonants and letters[j+1] in consonants: flag = 0 break if flag: for j in letters: sys.stdout.write(j) print "" ##Can this code be optimized in any way? [1]: https://www.hackerrank.com/contests/w30/challenges/melodious-password [2]: https://i.sstatic.net/g5GNd.jpg