#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include //#include using namespace std; //#define int ll typedef long long ll; typedef pair P; typedef pair > PP; typedef vector VI; typedef vector VL; //static const int MOD = 1000000007; //static const int INF = 2147483647; //static const long long INF = 9223372000000000000; //static const long long INF = 9223372000000000000/2; //static const int INF = 1000010000; //int dx4[4] = {0,1,0,-1}, dy4[4] = {-1,0,1,0}; //int dx5[5] = {-1,0,0,0,1}, dy5[5] = {0,-1,0,1,0}; //int dx8[8] = {-1,0,1,1,1,0,-1,-1}, dy8[8] = {1,1,1,0,-1,-1,-1,0}; //int dx9[9] = {-1,0,1,1,1,0,-1,-1,0}, dy9[9] = {1,1,1,0,-1,-1,-1,0,0}; #define PB push_back #define MP make_pair #define MT make_tuple #define FI first #define SE second #define NP next_permutation #define PQ priority_queue #define UB upper_bound #define LB lower_bound #define SZ(a) int((a).size()) #define LEN(a) int((a).length()) #define SORT(c) sort((c).begin(),(c).end()) #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,x) for(int i=0;i<(int)(x);i++) #define REP1(i,x) for(int i=1;i<=(int)(x);i++) #define RREP(i,x) for(int i=((int)(x)-1);i>=0;i--) #define RREP1(i,x) for(int i=((int)(x));i>0;i--) #define ALL(x) (x).begin(),(x).end() struct edge {int /*from,*/to,cost;}; signed main(){ int x,y; cin >> x >> y; //assert(-100<=x&&x<=100&&-100<=y&&y<=100); if(x==y) puts("0"); else if(x==0) puts("2"); else if(y==0) puts("1"); else if(x==-y) puts("3"); else puts("-1"); return 0; }