Vasya will fancy any number as long as it is an integer power of two. Petya, on the other hand, is very conservative and only likes a single integer p (which may be positive, negative, or zero). To combine their tastes, they invented p-binary numbers of the form 2^x + p, where x is a non-negative integer.

For example, some -9-binary ("minus nine" binary) numbers are: -8 (minus eight), 7 and 1015 (-8=2^0-9, 7=2^4-9, 1015=2^{10}-9).

The boys now use p-binary numbers to represent everything. They now face a problem: given a positive integer n, what's the smallest number of p-binary numbers (not necessarily distinct) they need to represent n as their sum? It may be possible that representation is impossible altogether. Help them solve this problem.

For example, if p=0 we can represent 7 as 2^0 + 2^1 + 2^2.

And if p=-9 we can represent 7 as one number (2^4-9).

Note that negative p-binary numbers are allowed to be in the sum (see the Notes section for an example).

Input

The only line contains two integers n and p (1 ≤ n ≤ 10^9, -1000 ≤ p ≤ 1000).

Output

If it is impossible to represent n as the sum of any number of p-binary numbers, print a single integer -1. Otherwise, print the smallest possible number of summands.

Examples

Input


24 0


Output


2


Input


24 1


Output


3


Input


24 -1


Output


4


Input


4 -7


Output


2


Input


1 1


Output


-1

Note

0-binary numbers are just regular binary powers, thus in the first sample case we can represent 24 = (2^4 + 0) + (2^3 + 0).

In the second sample case, we can represent 24 = (2^4 + 1) + (2^2 + 1) + (2^0 + 1).

In the third sample case, we can represent 24 = (2^4 - 1) + (2^2 - 1) + (2^2 - 1) + (2^2 - 1). Note that repeated summands are allowed.

In the fourth sample case, we can represent 4 = (2^4 - 7) + (2^1 - 7). Note that the second summand is negative, which is allowed.

In the fifth sample case, no representation is possible.
//package pro.apitrade.util;

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int p = sc.nextInt();
        int r = -1;
        for (int i = 1; i < 50; i++) {
            int x = n - i*p;
            int y = x;
            //System.out.println("x=" + x);
            int k = 0;
            if (x <= 0) {
                break;
            }
            while (x > 0) {
                if (x % 2 == 1) k++;
                x /= 2;
            }
            //System.out.println("i=" + i + " k=" + k);
            if (k <= i && y >= i) { // x = 3, k = 2, i = 4; n = 11 p = 2
                r = i;
                break;
            }
        }
        System.out.println(r);
    }

    public static void mainD(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        List<Map<Integer, Integer>> ls = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            int x = 2; //sc.nextInt();
            Map<Integer, Integer> map = new HashMap<>();
            ls.add(map);
            for (int j = 2; j*j <= x; j++) {
                int p = 0;
                while (x % j == 0) {
                    p++;
                    x /= j;
                }
                if (p > 0) map.put(j, p);
            }
            if (x > 1) map.put(x, 1);
        }
        System.out.println("==");
        long ans = 0;
        for (int i = 0; i < ls.size(); i++) {
            Map<Integer, Integer> m1 = ls.get(i);
            for (int j = i + 1; j < ls.size(); j++) {
                Map<Integer, Integer> m2 = ls.get(j);
                Set<Integer> set = new HashSet(m1.keySet());
                set.addAll(m2.keySet());
                boolean bad = false;
                for (int p : set) {
                    int t = 0;
                    if (m1.containsKey(p)) t += m1.get(p);
                    if (m2.containsKey(p)) t += m2.get(p);
                    if (t % k != 0) { bad = true; break; }
                }
                if (!bad) ans ++;
            }
        }
        System.out.println(ans);
    }
}
