#include<stdio.h>
#include<string.h>
#define N 1100
int n,str[N],k[N],a[N];
char p[N];
void pown()
{
int i,j,b[N],g;
for(i=1;i<=N;i++){a[i]=0;}
a[0]=1;
for(g=0;g<n;g++)
{
for(i=0;i<N;i++)
{
b[i]=a[i];
a[i]=0;
}
for(i=0;i<N;i++)
{
for(j=0;j<10;j++)
{
a[i+j]+=b[i]*k[j];
}
}
for(i=0;i<N-1;i++)
{
a[i+1]+=a[i]/10;
a[i]=a[i]%10;
}
}
}
int main()
{
int i,j;
while(~scanf("%d%s",&n,p))
{
for(i=0;i<=10;i++)k[i]=0;
int len=strlen(p);
for(i=0;i<len;i++)
{
a[i]=p[i]-'0';
}
for(i=0;i<N;i++)str[i]=0;//不要忘了将str清0,否则会错
for(j=0,i=len-1;j<len;i--,j++)str[j]=a[i];//将p倒置
for(i=9;i>=0;i--)//将k值从高位到低位一次尝试
{
for(k[i]=9;k[i]>=0;k[i]--)
{
pown();//求k的n次方
for(j=N-1;j>=0;j--)
{
if(a[j]!=str[j])break;
}
if(a[j]<=str[j])break;
//如果a(即此时的k^n值)小于等于p那么k的第i位值为当前值
}
}
for(i=9;i>0;i--)
{
if(k[i]!=0)break;
}
for(;i>=0;i--)
{
printf("%d",k[i]);
}
printf("\n");
}
}