fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun readTime () = let val h = readInt () val _ = TextIO.scanStream Char.scan TextIO.stdIn (* skip ":" *) val m = readInt () in (h, m) end val () = let val n = readInt () val sleepRecords = List.tabulate (n, fn _ => (readTime (), readTime ())) val ans = List.foldl (fn (((sh, sm), (eh, em)), acc) => if sh < eh orelse (sh = eh andalso sm <= em) then (eh * 60 + em) - (sh * 60 + sm) + acc else ((eh + 24) * 60 + em) - (sh * 60 + sm) + acc) 0 sleepRecords in print (Int.toString ans ^ "\n") end