#include <iostream>
#include <string> // Для чтения второй строки R, хотя она игнорируется
#include <vector> // Не используется, но часто бывает полезен
#include <numeric> // Для __builtin_popcountll

// Модуль для ответа
const int MOD = 1e9 + 7;

// Функция для подсчета popcount (количество единиц в двоичном представлении).
// Используется для чисел типа long long.
// В GCC-совместимых компиляторах __builtin_popcountll очень эффективна.
// Если требуется поддержка C++20, можно использовать std::popcount.
// В противном случае можно реализовать вручную, как показано в закомментированной секции.
/*
int get_popcount_manual(long long x) {
    int count = 0;
    while (x > 0) {
        x &= (x - 1); // Очищаем младший значащий бит
        count++;
    }
    return count;
}
*/

int main() {
    // Оптимизируем стандартные потоки C++ для ускорения ввода/вывода.
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);

    long long R_value; // Это переменная будет хранить фактическое число R
    long long K;       // Модуль для popcount

    // Читаем n и K. По условию задачи, n здесь интерпретируется как R_value.
    std::cin >> R_value >> K;

    // Читаем вторую строку (R как строка из n цифр), но игнорируем ее,
    // поскольку R_value уже содержит нужное нам число R.
    std::string R_str_ignored; 
    std::cin >> R_str_ignored;

    // Максимальное возможное popcount для числа до 30000.
    // 30000 в двоичной системе это 111010100110000_2 (15 бит).
    // popcount(32767) (2^15 - 1) равно 15.
    // Таким образом, максимальный popcount для x <= 30000 равен 15.
    const int MAX_POSSIBLE_POPCOUNT_FOR_R_SMALL = 15; 

    // Если K больше максимального popcount для чисел в диапазоне [0, R_value],
    // то условие popcount(x) % K == 0 может быть выполнено только если popcount(x) == 0.
    // Единственное число с popcount == 0 - это 0.
    // Поскольку 0 <= 0 <= R_value всегда истинно, ответ равен 1 (для x=0).
    if (K > MAX_POSSIBLE_POPCOUNT_FOR_R_SMALL) {
        std::cout << 1 << std::endl;
        return 0;
    }

    long long count = 0; // Итоговый счетчик подходящих чисел.

    // Перебираем все числа x от 0 до R_value.
    for (long long x = 0; x <= R_value; ++x) {
        // Вычисляем popcount для x.
        // Используем __builtin_popcountll для long long для эффективности (расширение GCC/Clang).
        int current_popcount = __builtin_popcountll(x); 
        // Альтернатива, если __builtin_popcountll недоступен:
        // int current_popcount = get_popcount_manual(x);

        // Проверяем, делится ли popcount(x) на K.
        if (current_popcount % K == 0) {
            count = (count + 1) % MOD; // Увеличиваем счетчик по модулю.
        }
    }

    std::cout << count << std::endl;

    return 0;
}