print([sum([(lambda l1, h1, l2, h2, f: f(set(range(l1, h1 + 1)), set(range(l2, h2 + 1))))(*map(int, l.replace("-", ",").split(",")), f)
for l in open("input04").readlines()])
for f in [lambda r1, r2: r1 & r2 in [r1, r2],
lambda r1, r2: bool(r1 & r2)]])
Inte världens mest effektiva lösning med tanke på att jag genererar ett set med alla medlemmar i båda rangerna, men logiken blir ganska enkel. Sedan gör jag det två gånger.