#include <cstdio>
#include <cstring>
#define Nmax 1024
#define BASE 10000
#define Lmax 128
#define ll long long
#define MAX(a,b) ((a) >= (b) ? (a) : (b))
int n, m;
int a[Lmax], b[Lmax];
int c[2][Nmax][Lmax];
int d[2][Nmax][Lmax];
void citire()
{
int i, j, l;
char s[Lmax];
scanf("%d %d\n", &n, &m);
scanf("%s\n", s);
l = strlen(s);
for (i = 1; i <= l; i += 4)
{
++a[0];
for (j = 3; j >= 0; --j)
if (l - i - j >= 0)
a[a[0]] = a[a[0]] * 10 + s[l - i - j] - '0';
}
scanf("%s\n", s);
l = strlen(s);
for (i = 1; i <= l; i += 4)
{
++b[0];
for (j = 3; j >= 0; --j)
if (l - i - j >= 0)
b[b[0]] = b[b[0]] * 10 + s[l - i - j] - '0';
}
}
void scrie(int a[])
{
int i;
printf("%d", a[a[0]]);
for (i = a[0] - 1; i >= 1; --i)
printf("%.4d", a[i]);
printf("\n");
}
void ATRIB(int A[], int B)
{
int i;
for (i = 0; i < Lmax; ++i)
A[i] = 0;
do
{
A[++A[0]] = B % BASE;
B /= BASE;
}
while (B);
}
void ADD(int A[], int B[])
{
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;
}
void MUL(int A[], int B[])
{
int i, j, t, C[Lmax];
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; ++i)
{
t = 0;
for (j = 1; j <= B[0] || t; ++j, t /= BASE)
C[i + j - 1] = (t += C[i + j - 1] + A[i] * B[j]) % BASE;
if (i + j - 2 > C[0])
C[0] = i + j - 2;
}
memcpy(A, C, sizeof(C));
}
void SUB(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; ++i)
A[i] += (t = (A[i] -= B[i] + t) < 0) * BASE;
while (A[0] && !A[A[0]]) --A[0];
}
int cmp(int A[], int B[])
{
int i;
if (A[0] > B[0]) return 1;
if (A[0] < B[0]) return -1;
for (i = A[0]; i >= 1; --i)
if (A[i] > B[i]) return 1;
else if (A[i] < B[i]) return -1;
return 0;
}
void solve()
{
int i, j, step = 1, c0;
int v1[Lmax], v2[Lmax];
ATRIB(c[0][0], 1);
for (i = 1; i <= n; ++i, step = !step)
{
memset(c[step], 0, sizeof(c[step]));
ATRIB(c[step][0], 1);
for (j = 1; j <= n; ++j)
{
ADD(c[step][j], c[!step][j - 1]);
ADD(c[step][j], c[!step][j]);
}
}
c0 = !step;
for (i = 0; i <= n; ++i)
ATRIB(d[0][i], 1);
step = 1;
for (i = 1; i <= n; ++i, step = !step)
{
memset(d[step], 0, sizeof(d[step]));
for (j = 1; j <= n; ++j)
{
ADD(d[step][j], d[step][j - 1]);
ADD(d[step][j], d[!step][MAX(j - m - 1, 0)]);
}
memcpy(v1, c[c0][i], sizeof(v1));
SUB(v1, d[step][n]);
MUL(v1, b);
memcpy(v2, c[c0][i], sizeof(v2));
MUL(v2, a);
if (cmp(v1, v2) >= 0)
{
printf("%d\n", i);
break;
}
}
}
int main()
{
freopen("bile2.in", "r", stdin);
freopen("bile2.out", "w", stdout);
citire();
solve();
return 0;
}