#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
const int MAXN = 9999;
const int MAXK = 9999;
std::vector<std::vector<std::vector<int>>> dp(MAXN, std::vector<std::vector<int>>(MAXK, std::vector<int>(MAXN, -1)));
int solve(int n, int k, int f) {
if (k == 0 || k > n) return INT_MAX;
if (f == 0 || f == n) return 0;
if (dp[n][k][f] != -1) return dp[n][k][f];
int minTests = INT_MAX;
for (int x = 1; x <= f; ++x) {
int remainingTests = std::min(solve(n - x, k - 1, f - x), solve(n - x, k, x - 1));
minTests = std::min(minTests, remainingTests + 1);
}
dp[n][k][f] = minTests;
return minTests;
}
int main() {
int n, k;
std::cin >> n >> k;
if (n < 1 || n > MAXN || k < 1 || k > MAXK) {
std::cerr << "输入的n或k超出了预设的范围。" << std::endl;
return 1;
}
std::cout << "Minimum number of tests required: " << solve(n, k, n - 1) << std::endl;
return 0;
}