#include <bits/stdc++.h>
using namespace std;
#define LL long long
int main() {
LL up = 2, right = 2, down = 1, left = 1;
LL a, b, x = 1, y = -1;
//a,b是输入的坐标
//x,y在程序中是变动的坐标
LL n = 6;
//n是路径长度
LL Cha = 0;
//Cha是顶点和输入点的差值
cin >> a >> b;
if (a == -1 && b == 0) {
cout << 1;
return 0;
}
if (a == -1 && b == 1) {
cout << 2;
return 0;
}
if (a == 0 && b == 1) {
cout << 3;
return 0;
}
if (a == 1 && b == 1) {
cout << 4;
return 0;
}
if (a == 1 && b == 0) {
cout << 5;
return 0;
}
if (a == 1 && b == -1) {
cout << 6;
return 0;
}
//前六个特殊处理
//从1,-1开始
while (1) {
down += 2;
//下面的线每次长度比上次大2,故每次加2
x -= down;
//x坐标就是当前点位减当前线的长度
n += down;
//路径长度n增加
if (b == y && a <= x && a >= x + n) {
//当目标点在当前这条线上时(y坐标相同,x坐标在两端之间)
Cha = a - x;
//计算目标点和顶点的差值
n = n - Cha;
//减去差值
goto l1;
//输出答案
}
left += 2;
y += left;
n += left;
if (x == a && b >= y - n && b <= y) {
Cha = y - b;
n = n - Cha;
goto l1;
}
up += 2;
x += up;
n += up;
if (y == b && a >= x - n && a <= x) {
Cha = x - a;
n = n - Cha;
goto l1;
}
right += 2;
y -= right;
n += right;
if (x == a && b >= y && b <= y + n) {
Cha = b - y;
n = n - Cha;
goto l1;
}
}
l1:
cout << n;
return 0;
}