The determinant of a matrix 2 × 2 is defined as follows:

A matrix is called degenerate if its determinant is equal to zero. 

The norm ||*A*|| of a matrix *A* is defined as a maximum of absolute values of its elements.

You are given a matrix <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/e78540a0de68f85833f82714a7141114b781276e.png" style="max-width: 100.0%;max-height: 100.0%;"/>. Consider any degenerate matrix *B* such that norm ||*A* - *B*|| is minimum possible. Determine ||*A* - *B*||.
The first line contains two integers *a* and *b* (|*a*|, |*b*| ≤ 10<sup class="upper-index">9</sup>), the elements of the first row of matrix *A*. 

The second line contains two integers *c* and *d* (|*c*|, |*d*| ≤ 10<sup class="upper-index">9</sup>) the elements of the second row of matrix *A*.

arr = [0]* 4
p = [0] * 3

def value():
    global arr, p
    return max(max(abs(arr[0] - p[0]), abs(arr[1] - p[0] * p[1])), max(abs(arr[2] - p[0] * p[2]), abs(arr[3] - p[0] * p[1] * p[2])))

def foo(index):
    global p
    if index == 3:
        return value()
    left = -10 ** 9
    right = 10 ** 9
    best_answer = 10 ** 30;
    for i in range(100):
        middle1 = (right - left) / 3 + left
        p[index] = middle1;
        answer1 = foo(index + 1)
        best_answer = min(answer1, best_answer)
        middle2 = (right - left) / 3 * 2 + left
        p[index] = middle2;
        answer2 = foo(index + 1)
        best_answer = min(answer2, best_answer)
        if answer1 < answer2:
            right = middle2
        else:
            left = middle1
    return best_answer 


for i in range(0, 3, 2):
    arr[i + 0], arr[i + 1] = map(int, input().split())
print(foo(0))