gets puts readlines.inject(0) { |sum, line| start_time, end_time = line.chomp.split start_hour, start_min = start_time.split(':').map(&:to_i) end_hour, end_min = end_time.split(':').map(&:to_i) diff_hour = (end_hour - start_hour) % 12 diff_min = (end_min - start_min).abs if start_min > end_min diff_hour -= 1 diff_min = 60 - diff_min end diff_hour = 0 if diff_hour.negative? sum + diff_hour * 60 + diff_min }