def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 M = int(input[ptr]) ptr += 1 x_min = float('inf') x_max = -float('inf') y_min = float('inf') y_max = -float('inf') for _ in range(M): xi = int(input[ptr]) ptr += 1 di = int(input[ptr]) ptr += 1 ys = list(map(int, input[ptr:ptr + di])) ptr += di # Update x_min and x_max if xi < x_min: x_min = xi if xi > x_max: x_max = xi # Update y_min and y_max for y in ys: if y < y_min: y_min = y if y > y_max: y_max = y x_span = x_max - x_min if x_max != -float('inf') and x_min != float('inf') else 0 y_span = y_max - y_min if y_max != -float('inf') and y_min != float('inf') else 0 # Calculate possible connection options options = [ abs(x_max - y_min), abs(x_max - y_max), abs(x_min - y_min), abs(x_min - y_max) ] min_option = min(options) if M > 0 and len(options) > 0 else 0 total = x_span + y_span + min_option print(total) if __name__ == "__main__": main()