with open("input") as f: puzzle_input = [n.strip() for n in f.readlines()] # puzzle_input = ["qjhvhtzxzqqjkmpb", "xxyxx", "uurcxstgmygtbstg", "ieodomkazucvgmuy"] nice_words = 0 def has_duplicate_pair(word): for idx_a in range(len(word) - 3): for idx_b in range(idx_a + 2, len(word) - 1): pair_1 = word[idx_a] + word[idx_a + 1] pair_2 = word[idx_b] + word[idx_b + 1] if pair_1 == pair_2: return True return False def has_repeated_letter_with_one_between(word): for idx, a in enumerate(word[:-2]): b = word[idx + 2] if a == b: return True return False def is_nice_word(word): return has_duplicate_pair(word) and has_repeated_letter_with_one_between(word) for word in puzzle_input: if is_nice_word(word): nice_words += 1 print(nice_words)