Problem:
Score : 300 points

Problem Statement

You are given three integers A, B and C. Find the minimum number of operations required to make A, B and C all equal by repeatedly performing the following two kinds of operations in any order:

Choose two among A, B and C, then increase both by 1.

Choose one among A, B and C, then increase it by 2.

It can be proved that we can always make A, B and C all equal by repeatedly performing these operations.

Constraints

0 \leq A,B,C \leq 50

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B C

Output

Print the minimum number of operations required to make A, B and C all equal.

Sample Input 1

2 5 4

Sample Output 1

2

We can make A, B and C all equal by the following operations:

Increase A and C by 1. Now, A, B, C are 3, 5, 5, respectively.

Increase A by 2. Now, A, B, C are 5, 5, 5, respectively.

Sample Input 2

2 6 3

Sample Output 2

5

Sample Input 3

31 41 5

Sample Output 3

23

Solution in Haskell (GHC 7.10.3) (judge verdict: Accepted)

main = do
  li <- getLine
  let [a,b,c] = map read $ words li
  let ans = compute a b c
  print ans

{-
増やすことしかできないので、a+x = b+y = c+z = K まで増やして完成するとする。
どちらの操作も、合計で2増やすので、操作回数は (x+y+z)/2 である。これの最小値が欲しい。
a >= b >= c と仮定して、a=Kとできたとすると、
x=0, y=a-b, z=a-c, x+y+z = 2a-b-c これが偶数ならそれでできる。
奇数のときは、a+1=Kでできたとすると、
x=1, y=a-b+1, z=a-c+1, x+y+z = 2a-b-c+3 2a-b-cが奇数ならこれは偶数
2a-b-c = 3a - (a+b+c)
-}

compute :: Int -> Int -> Int -> Int
compute a b c
  | even e = div e 2
  | True   = div (e+3) 2
  where
    d = maximum [a,b,c]
    e = 3 * d - a - b - c