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 C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <iostream>

using namespace std;

int main()
{
        int a,b,c;
        cin>>a>>b>>c;
        if (a<b)
        {
            int temp=a;
            a=b;
            b=temp;
        }
        if (b<c)
        {
            int temp=b;
            b=c;
            c=temp;
        }
        if (a<b)
        {
            int temp=a;
            a=b;
            b=temp;
        }
        int d = a-b,e = a-c;
        int b1=d/2,b2=d%2,c1=e/2,c2=e%2;
        int sum=b1+c1;
        if (b2 == 1&&c2 == 1)
            sum++;
        if ((b2 == 1&&c2 == 0)||(b2 == 0&&c2 == 1))
            sum+=2;
        cout<<sum<<endl;
    return 0;
}