import java.util.*; public class Main { static class Line { int x1, y1, x2, y2; public Line(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; } } private static int countCells(Line line, Pair<Integer, Integer> star, boolean split) { if (line.x1 == line.x2) { if (split) { return Math.min(Math.abs(star.second - line.y1), Math.abs(star.second - line.y2)) + 1; } else { return Math.abs(line.y1 - line.y2) + 1; } } else { if (split) { return Math.min(Math.abs(star.first - line.x1), Math.abs(star.first - line.x2)) + 1; } else { return Math.abs(line.x1 - line.x2) + 1; } } } private static boolean intersects(Line a, Line b, Pair<Integer, Integer> intersection) { if (a.x1 == a.x2 && b.y1 == b.y2) { if (b.x1 <= a.x1 && a.x1 <= b.x2 && a.y1 <= b.y1 && b.y1 <= a.y2) { intersection.set(a.x1, b.y1); return true; } } if (a.y1 == a.y2 && b.x1 == b.x2) { if (a.x1 <= b.x1 && b.x1 <= a.x2 && b.y1 <= a.y1 && a.y1 <= b.y2) { intersection.set(b.x1, a.y1); return true; } } return false; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); List<Line> lines = new ArrayList<>(); for (int i = 0; i < N; ++i) { int x1 = sc.nextInt(); int y1 = sc.nextInt(); int x2 = sc.nextInt(); int y2 = sc.nextInt(); if (x1 > x2 || (x1 == x2 && y1 > y2)) { int temp = x1; x1 = x2; x2 = temp; temp = y1; y1 = y2; y2 = temp; } lines.add(new Line(x1, y1, x2, y2)); } int K = sc.nextInt(); Map<Pair<Integer, Integer>, List<Line>> stars = new HashMap<>(); for (int i = 0; i < N; ++i) { for (int j = i + 1; j < N; ++j) { Pair<Integer, Integer> intersection = new Pair<>(0, 0); if (intersects(lines.get(i), lines.get(j), intersection)) { stars.computeIfAbsent(intersection, k -> new ArrayList<>()).add(lines.get(i)); stars.computeIfAbsent(intersection, k -> new ArrayList<>()).add(lines.get(j)); } } } int totalIntensity = 0; for (Map.Entry<Pair<Integer, Integer>, List<Line>> entry : stars.entrySet()) { if (entry.getValue().size() / 2 == K) { List<Integer> intensities = new ArrayList<>(); for (Line line : entry.getValue()) { intensities.add(countCells(line, entry.getKey(), true)); } totalIntensity += Collections.min(intensities); } } System.out.println(totalIntensity); } // Pair class to store x and y coordinates of intersections static class Pair<T, U> { T first; U second; public Pair(T first, U second) { this.first = first; this.second = second; } public void set(T first, U second) { this.first = first; this.second = second; } } }