N, M = gets.split.map(&:to_i) edges = [] edges = [*1..N].map{ p1, p2 = gets.split.map(&:to_i) if p1 < p2 then [p1, p2] else [p2, p1] end }.sort_by{|p| p[0]} n_cross = 0 for i in 0...edges.size do car_path = edges[i] for j in i...edges.size do from, to = edges[j] if car_path[0] < from && from < car_path[1] && (to < car_path[0] || car_path[1] < to) then n_cross += 1 end end end p n_cross