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
****************************************************************/