···11+import fileinput
22+33+password_range = fileinput.input()[0]
44+start, end = (int(x) for x in password_range.split('-'))
55+66+def increasing(n):
77+ s = [int(c) for c in str(n)]
88+ if s[0] <= s[1] <= s[2] <= s[3] <= s[4] <= s[5]:
99+ return True
1010+1111+def part_1_valid(n):
1212+ if not increasing(n):
1313+ return False
1414+1515+ s = [int(c) for c in str(n)]
1616+ if s[0] == s[1] or s[1] == s[2] or s[2] == s[3] or s[3] == s[4] or s[4] == s[5]:
1717+ return True
1818+1919+ return False
2020+2121+def part_2_valid(n):
2222+ if not increasing(n):
2323+ return False
2424+2525+ s = [int(c) for c in str(n)]
2626+ if ((s[0] == s[1] and s[1] != s[2]) or
2727+ (s[1] == s[2] and s[1] != s[0] and s[1] != s[3]) or
2828+ (s[2] == s[3] and s[2] != s[1] and s[2] != s[4]) or
2929+ (s[3] == s[4] and s[3] != s[2] and s[3] != s[5]) or
3030+ (s[4] == s[5] and s[4] != s[3])):
3131+ return True
3232+3333+ return False
3434+3535+print "Part 1 passwords:", sum(part_1_valid(n) for n in range(start, end + 1))
3636+print "Part 2 passwords:", sum(part_2_valid(n) for n in range(start, end + 1))