import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;


public class Main {
	static int[][] d = {{1,-1},{1,1},{2,0}};
	static int[] step;
	static boolean[] vis;
	static final int MAX = 100005;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNextInt()){
			int m = in.nextInt();
			int n = in.nextInt();
			vis = new boolean[MAX];
			step = new int[MAX];
			System.out.println(bfs(m,n));
		}
	}

	public static int bfs(int s, int e) {
		Queue q = new LinkedList();
		q.add(s);
		vis[s] = true;
		step[s] = 0;
		while (!q.isEmpty()) {
			int t = (int) q.poll();
			if (t == e)
				return step[t];
			for (int i = 0; i < 3; i++) {
				int xx = d[i][0] * t + d[i][1];
				if (xx >= MAX || xx < 0 || vis[xx])
					continue;
				vis[xx] = true;
				step[xx] = step[t] + 1;
				q.add(xx);
			}
		}
		return -1;
	}
}


/**************************************************************
	Problem: 2111
	User: admin
	Language: Java
	Result: Accepted
	Time:4709 ms
	Memory:45388 kb
****************************************************************/