#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LNF = 1e16;
const double inf = 0x3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int maxn = 1000 + 10;
const int mod = 1e9 + 7;
const int dr[] = {-1, 0, 1, 0};
const int dc[] = {0, 1, 0, -1};
const char *de[] = {"0000", "0001", "0010", "0011", "0100", "0101",
                    "0110", "0111", "1000", "1001", "1010", "1011",
                    "1100", "1101", "1110", "1111"};
int n, m;
const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inline bool is_in(int r, int c) { return r >= 0 && r < n && c >= 0 && c < m; }
int main() {
  cin >> n >> m;
  int x = 0, y = 0;
  int det = 0, ans = -1;
  while (true) {
    ++det;
    int xx = x, yy = y;
    x += det;
    ++ans;
    if (y == m && x >= n && n >= xx) break;
    xx = x, yy = y;
    y += det;
    ++ans;
    if (x == n && y >= m && m >= yy) break;
    ++det;
    xx = x, yy = y;
    x -= det;
    ++ans;
    if (y == m && n >= x && n <= xx) break;
    xx = x, yy = y;
    y -= det;
    ++ans;
    if (x == n && m <= yy && m >= y) break;
  }
  printf("%d\n", ans);
  return 0;
}
