Snuke has a calculator. It has a display and two buttons.

Initially, the display shows an integer x. Snuke wants to change this value into another integer y, by pressing the following two buttons some number of times in arbitrary order:

* Button A: When pressed, the value on the display is incremented by 1.
* Button B: When pressed, the sign of the value on the display is reversed.



Find the minimum number of times Snuke needs to press the buttons to achieve his objective. It can be shown that the objective is always achievable regardless of the values of the integers x and y.

Constraints

* x and y are integers.
* |x|, |y| ≤ 10^9
* x and y are different.

Input

The input is given from Standard Input in the following format:


x y


Output

Print the minimum number of times Snuke needs to press the buttons to achieve his objective.

Examples

Input

10 20


Output

10


Input

10 -10


Output

1


Input

-10 -20


Output

12
import java.io.*;
import java.util.*;


public class Main {

	private static Scanner sc;
	private static Printer pr;

	private static void solve() {
		int x = sc.nextInt();
		int y = sc.nextInt();

		if (x == 0) {
			if (y > 0) {
				pr.println(Math.abs(y - x));
			} else if (y < 0) {
				pr.println(Math.abs(y - x) + 1);
			}
		} else if (x > 0) {
			if (y > 0 && Math.abs(y) > Math.abs(x)) {
				pr.println(Math.abs(y) - Math.abs(x));
			} else if (y > 0 && Math.abs(y) == Math.abs(x)) {
			} else if (y > 0 && Math.abs(y) < Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 2);
			} else if (y == 0) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 1);
			} else if (y < 0 && Math.abs(y) > Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 1);
			} else if (y < 0 && Math.abs(y) == Math.abs(x)) {
				pr.println(1);
			} else if (y < 0 && Math.abs(y) < Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 1);
			}
		} else if (x < 0) {
			if (y > 0 && Math.abs(y) > Math.abs(x)) {
				pr.println(Math.abs(y) - Math.abs(x) + 1);
			} else if (y > 0 && Math.abs(y) == Math.abs(x)) {
				pr.println(1);
			} else if (y > 0 && Math.abs(y) < Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 1);
			} else if (y == 0) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)));
			} else if (y < 0 && Math.abs(y) > Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)) + 2);
			} else if (y < 0 && Math.abs(y) == Math.abs(x)) {
			} else if (y < 0 && Math.abs(y) < Math.abs(x)) {
				pr.println(Math.abs(Math.abs(y) - Math.abs(x)));
			}
		}
	}

	// ---------------------------------------------------
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		pr = new Printer(System.out);

		solve();

		pr.close();
		sc.close();
	}

	@SuppressWarnings("unused")
	private static class Scanner {
		BufferedReader br;

		Scanner (InputStream in) {
			br = new BufferedReader(new InputStreamReader(in));
		}

		private boolean isPrintable(int ch) {
			return ch >= '!' && ch <= '~';
		}

		private boolean isCRLF(int ch) {
			return ch == '\n' || ch == '\r' || ch == -1;
		}

		private int nextPrintable() {
			try {
				int ch;
				while (!isPrintable(ch = br.read())) {
					if (ch == -1) {
						throw new NoSuchElementException();
					}
				}

				return ch;
			} catch (IOException e) {
				throw new NoSuchElementException();
			}
		}

		String next() {
			try {
				int ch = nextPrintable();
				StringBuilder sb = new StringBuilder();
				do {
					sb.appendCodePoint(ch);
				} while (isPrintable(ch = br.read()));

				return sb.toString();
			} catch (IOException e) {
				throw new NoSuchElementException();
			}
		}

		int nextInt() {
			try {
				// parseInt from Integer.parseInt()
				boolean negative = false;
				int res = 0;
				int limit = -Integer.MAX_VALUE;
				int radix = 10;

				int fc = nextPrintable();
				if (fc < '0') {
					if (fc == '-') {
						negative = true;
						limit = Integer.MIN_VALUE;
					} else if (fc != '+') {
						throw new NumberFormatException();
					}
					fc = br.read();
				}
				int multmin = limit / radix;

				int ch = fc;
				do {
					int digit = ch - '0';
					if (digit < 0 || digit >= radix) {
						throw new NumberFormatException();
					}
					if (res < multmin) {
						throw new NumberFormatException();
					}
					res *= radix;
					if (res < limit + digit) {
						throw new NumberFormatException();
					}
					res -= digit;

				} while (isPrintable(ch = br.read()));

				return negative ? res : -res;
			} catch (IOException e) {
				throw new NoSuchElementException();
			}
		}

		long nextLong() {
			try {
				// parseLong from Long.parseLong()
				boolean negative = false;
				long res = 0;
				long limit = -Long.MAX_VALUE;
				int radix = 10;

				int fc = nextPrintable();
				if (fc < '0') {
					if (fc == '-') {
						negative = true;
						limit = Long.MIN_VALUE;
					} else if (fc != '+') {
						throw new NumberFormatException();
					}
					fc = br.read();
				}
				long multmin = limit / radix;

				int ch = fc;
				do {
					int digit = ch - '0';
					if (digit < 0 || digit >= radix) {
						throw new NumberFormatException();
					}
					if (res < multmin) {
						throw new NumberFormatException();
					}
					res *= radix;
					if (res < limit + digit) {
						throw new NumberFormatException();
					}
					res -= digit;

				} while (isPrintable(ch = br.read()));

				return negative ? res : -res;
			} catch (IOException e) {
				throw new NoSuchElementException();
			}
		}

		float nextFloat() {
			return Float.parseFloat(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			try {
				int ch;
				while (isCRLF(ch = br.read())) {
					if (ch == -1) {
						throw new NoSuchElementException();
					}
				}
				StringBuilder sb = new StringBuilder();
				do {
					sb.appendCodePoint(ch);
				} while (!isCRLF(ch = br.read()));

				return sb.toString();
			} catch (IOException e) {
				throw new NoSuchElementException();
			}
		}

		void close() {
			try {
				br.close();
			} catch (IOException e) {
//				throw new NoSuchElementException();
			}
		}
	}

	private static class Printer extends PrintWriter {
		Printer(PrintStream out) {
			super(out);
		}
	}
}
