import re def checkpw(a, b, l, pw): print(a, b, l, pw) c = pw.count(l) if a <= c <= b: return True return False def main(): patt = re.compile("^(\d+)-(\d+) (.): (.+)$") with open("input2.txt") as file: lines = file.readlines() ln = [] for line in lines: m = re.match(patt, line) ln.append([int(m.group(1)), int(m.group(2)), m.group(3), m.group(4)]) valid = [pw for pw in ln if checkpw(pw[0], pw[1], pw[2], pw[3])] print(f"There are {len(valid)} valid passwords out of {len(ln)}.") if __name__ == "__main__": main()