#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e3 + 5;
const int BASE = 1e9 + 0;
const int DMAX = 1e2 + 5;
char str[DMAX];
int dp[2][NMAX][DMAX], cmb[2][NMAX][DMAX], num3[DMAX];
int num1[DMAX], num2[DMAX], aux[DMAX], num4[DMAX], axn[DMAX];
inline void add(int a[DMAX], int b[DMAX])
{
int i, t(0);
for (i = 1; i <= a[0] || i <= b[0] || t; ++i, t /= BASE)
a[i] = (t += a[i] + b[i]) % BASE;
a[0] = i - 1;
return;
}
inline void sub(int a[DMAX], int b[DMAX])
{
int i, t(0);
for (i = 1; i <= a[0]; ++i) {
a[i] -= b[i] + t;
a[i] += (t = a[i] < 0) * BASE;
}
while (a[0] > 1 && !a[a[0]])
--a[0];
return;
}
inline void mul(int a[DMAX], int b[DMAX])
{
long long t; int i, j;
memset(axn, 0, (a[0] + b[0] + 1) << 2);
for (i = 1; i <= a[0]; ++i) {
t = 0;
for (j = 1; j <= b[0] || t; ++j, t /= BASE) {
t += axn[i + j - 1] + 1LL * a[i] * b[j];
axn[i + j - 1] = t % BASE;
}
if (i + j - 2 > axn[0])
axn[0] = i + j - 2;
}
memcpy(a, axn, (axn[0] + 1) << 2);
return;
}
inline void read(int a[DMAX])
{
scanf("%s", str + 1);
int l = (int) strlen(str + 1);
for (int i = l; i >= 1; i -= 9) {
int nr(0);
for (int j = max(i - 8, 1); j <= i; ++j)
nr = nr * 10 + str[j] - '0';
a[++a[0]] = nr;
}
return;
}
inline int cmp(int a[DMAX], int b[DMAX])
{
if (a[0] != b[0])
return a[0] < b[0] ? -1 : 1;
for (int i = a[0]; i >= 1; --i)
if (a[i] != b[i])
return a[i] < b[i] ? -1 : 1;
return 0;
}
int main(void)
{
freopen("bile2.in" , "r", stdin );
freopen("bile2.out", "w", stdout);
int n, d;
scanf("%d %d", &n, &d);
read(num1); read(num2);
for (int i = 0, l = 0; i <= n; ++i, l ^= 1) {
cmb[l][0][0] = cmb[l][0][1] = 1;
for (int j = 1; j <= i; ++j) {
memset(cmb[l][j], 0, (cmb[l][j][0] + 1) << 2);
add(cmb[l][j], cmb[l ^ 1][j - 1]);
add(cmb[l][j], cmb[l ^ 1][j]);
}
}
for (int i = 1; i <= n; ++i)
dp[1][i][0] = 1, dp[1][i][1] = i;
for (int i = 2, l = 0; i <= n; ++i, l ^= 1) {
for (int j = 1; j <= n; ++j) {
memset(dp[l][j], 0, (dp[l][j][0] + 1) << 2);
if (j - d - 1 >= 1)
add(dp[l][j], dp[l ^ 1][j - d - 1]);
add(dp[l][j], dp[l][j - 1]);
}
memcpy(num3, num1, DMAX << 2);
mul(num3, cmb[n & 1][i]);
memcpy(aux, cmb[n & 1][i], DMAX << 2);
sub(aux, dp[l][n]);
memcpy(num4, num2, DMAX << 2);
mul(num4, aux);
if (cmp(num3, num4) < 0) {
printf("%d\n", i);
break;
}
}
return 0;
}