/*
  #問題：
  


  #分析：
  #オブジェクト：
  A
  B
  C

  #条件：
  

  #要求：
  「次の二つの操作」を繰り返して，「A,B,Cを全て等しくする」のに「必要な最小の操作回数」を求めたい．
  1) A,B,Cのうち2つを選んでそれらを１増やす
  2) A,B,Cのうち1つを選んでそれを２増やす
  

  #解法：
  $ 3つとも同じ場合，乃ちX==Y==Z
    単に0を出力する

  $ 2つが同じ場合
  (1)
  		$ X<Y==Z 
        	$ XとYの差が偶数の場合 例えば(3,7,7)など
              Xに2を足すことをX==Y==Zとなるまで繰り返す．

            $ XとYの差が奇数の場合，例えば(3,8,8)など
              (Y,Z)に(1,1)を足す．
              X==Y==ZとなるまでXに2を足すことを繰り返す

        $ X==Y<Z
          (X,Y)に(1,1)を足すことを，X==Y==Zとなるまで繰り返す．

  $ 全て異なる場合
    (X,Y)に(1,1)を足すことを，Y==Zとなるまで繰り返す．
    X<Y==Zとなったとき，
    (1)の処理を行う
  		$ YとXの差が偶数の場合，例えば(3,7,7)など
          

        $ YとXの差が奇数の場合
          
*/
 

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>
#include <set>
#include <map>
#include <vector>
#include <list>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <queue>
#include <bitset>     //UWAGA - w czasie kompilacji musi byc znany rozmiar wektora - nie mozna go zmienic
#include <cassert>
#include <iomanip>        //do setprecision
#include <ctime>
#include <complex>

#define FOR(i,b,e) for(int i=(b);i<(e);++i)
#define FORQ(i,b,e) for(int i=(b);i<=(e);++i)
#define FORD(i,b,e) for(int i=(b)-1;i>=(e);--i)
#define REP(x, n) for(int x = 0; x < (n); ++x)

#define ST first
#define ND second
#define PB push_back
#define MP make_pair
#define LL long long
#define uLL unsigned LL
#define LD long double

const double pi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342;
const int mod=1000000007;

using namespace std;

int main(void){
  int cnt=0;
  vector<int> A(3);
  FOR(i,0,3){
    cin>>A[i];
  }

  sort(A.begin(),A.end());
  set<int> st = {A[0],A[1],A[2]};

  int X,Y,Z;
  X=A[0]; Y=A[1]; Z=A[2];

  
  if(st.size()==1){
    cout<<0<<endl;
    return 0;
  }else if(st.size()==2){
    if(X<Y){                    // X<Y==Z
      if((X-Y)%2==0){           // XとYの差が偶数の場合，例えば(3,7,7)など
        while(1){
          if(X==Y){
            break;
          }
          X+=2;
          cnt++;
        }
        cout<<cnt<<endl;
        return 0;
      }else{                    // XとYの差が奇数の場合，例えば(3,8,8)など
        Y+=1; Z+=1;
        cnt++;
        while(1){
          if(X==Y){
            break;
          }
          X+=2;
          cnt++;
        }
        cout<<cnt<<endl;
        return 0;
      }
      
    }else if(Y<Z){              // X==Y<Zの場合
      while(1){
        if(Y==Z){
          break;
        }
        X+=1; Y+=1;
        cnt++;
      }
      cout<<cnt<<endl;
      return 0;
    }
    
    
  }else{                        // X,Y,Zがそれぞれ3つとも異なる場合
    while(1 ) {
      if(Y==Z) {
        break;
      }
      X+=1; Y+=1;
      cnt++;
    }
    //X<Y==Zとなった
    //(1)の処理を行う
    if(X<Y) {                    // X<Y==Z
      if((X-Y)%2==0){           // XとYの差が偶数の場合，例えば(3,7,7)など
        while(1){
          if(X==Y){
            break;
          }
          X+=2;
          cnt++;
        }
        cout<<cnt<<endl;
        return 0;
      }else{                    // XとYの差が奇数の場合，例えば(3,8,8)など
        Y+=1; Z+=1;
        cnt++;
        while(1){
          if(X==Y){
            break;
          }
          X+=2;
          cnt++;
        }
        cout<<cnt<<endl;
        return 0;
      }
    }
  }
  
  return 0;
}



Measured memory_bytes: 256