n = int(input())
h = int(input())
points = [tuple(map(int, input().split())) for _ in range(n)]

a1 = 0.0
a2 = 0.0
epsilon = 1e-12
max_iterations = 1000

for _ in range(max_iterations):
    f_group = []
    g_group = []
    for x, y in points:
        error_f = (y - (a1 * x + h)) ** 2
        error_g = (y - (a2 * x)) ** 2
        if error_f <= error_g:
            f_group.append((x, y))
        else:
            g_group.append((x, y))
    
    sum_xy_f = sum(x * (y - h) for x, y in f_group)
    sum_x_sq_f = sum(x * x for x, y in f_group)
    a1_new = a1 if sum_x_sq_f == 0 else sum_xy_f / sum_x_sq_f
    
    sum_xy_g = sum(x * y for x, y in g_group)
    sum_x_sq_g = sum(x * x for x, y in g_group)
    a2_new = a2 if sum_x_sq_g == 0 else sum_xy_g / sum_x_sq_g
    
    if abs(a1_new - a1) < epsilon and abs(a2_new - a2) < epsilon:
        a1, a2 = a1_new, a2_new
        break
    a1, a2 = a1_new, a2_new

total = 0.0
for x, y in points:
    error_f = (y - (a1 * x + h)) ** 2
    error_g = (y - (a2 * x)) ** 2
    total += min(error_f, error_g)

print("{0:.20f}".format(total).rstrip('0').rstrip('.') if '.' in "{0:.20f}".format(total) else "{0:.20f}".format(total))