import java.util.Scanner;

public class Main {
    // 默认不能完成转换
    private static int result = -1;

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            solution(in);
        }
    }

    /**
     * 模拟法: DFS遍历所有情况
     * @param in
     */
    private static void solution(Scanner in){
        int a = in.nextInt();
        int b = in.nextInt();
        int A = in.nextInt();
        int B = in.nextInt();

        dfs(a, b, A, B, 0);

        System.out.println(result);
    }

    /**
     * DFS
     * @param a
     * @param b
     * @param A
     * @param B
     * @param ops
     */
    private static void dfs(int a, int b, int A, int B, int ops){
        // 不能完成转换
        if(a>A || b>B){
            return;
        }

        // 完成转换 更新次数
        if(a==A && b==B){
            if(result == -1){
                result = ops;
            }else{
                result = Math.min(result, ops);
            }

            return;
        }

        // 红色按钮
        dfs(a+1, b+1, A, B, ops+1);
        // 蓝色按钮
        dfs(a*2, b*2, A, B, ops+1);
    }
}