#include <stdio.h>
#define MAX 100000
void prod(char *a, int na, char *b, int nb, char *c, int *nc)
{
int t, r, i, j, k;
t=0; r=0;
for (i=0; i<2*na+nb; i++) c[i]=0;
for (i=0; i<na; i++)
{
t=0;
for (j=0; j<nb; j++)
{
r=t+a[i]*b[j]+c[i+j];
c[i+j]=r%10;
t=r/10;
}
k=i+j;
while (t)
{
c[k]=t%10;
t/=10;
k++;
}
}
*nc=k;
}
int adun(char *x, int n, char b)
{
int t, i;
t=x[0]+b;
x[0]=t%10;
t/=10;
i=1;
while (t)
{
t+=x[i];
x[i]=t%10;
t/=10;
i++;
}
if (i>n) return i; else return n;
}
int comp(char *x, int n, char *y, int m)
{
int i;
if (n>m) return 1;
if (n<m) return -1;
if (n==m)
for (i=n-1; i>=0 && x[i]==y[i]; i--);
if (i<0) return 0;
else
if (x[i]<y[i]) return -1; else return 1;
}
int main()
{
FILE *f;
char cx, a[MAX], b[20], c[MAX], x[MAX]={0};
int n, m, l, k, i;
f=fopen("next.in", "rt");
n=0;
fscanf(f,"%c",&cx);
while (cx!='\n')
{
a[n]=cx-'0';
n++;
fscanf(f,"%c", &cx);
}
for (i=0; i<n/2; i++)
{
cx=a[i];
a[i]=a[n-i-1];
a[n-i-1]=cx;
}
m=0;
fscanf(f,"%c",&cx);
while (cx!='\n')
{
b[m]=cx-'0';
m++;
fscanf(f,"%c", &cx);
}
for (i=0; i<m/2; i++)
{
cx=b[i];
b[i]=b[m-i-1];
b[m-i-1]=cx;
}
fclose(f);
/*
*/
l=0;
do
{
l=adun(x, l, 1);
prod(b, m, x, l, c, &k);
}while (comp(c, k, a, n)<0);
f=fopen("next.out","wt");
for (i=k-1; i>=0; i--) fprintf(f,"%i", c[i]);
fprintf(f, "\n");
fclose(f);
return 0;
}