/*
基本思路是最大32位二进制数故最大开32次方,枚举32次即可。
用pow函数,加上ceil() 和floor()很方便啊。
*/
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
double y1,y2,temp;
double x;
int i,j;
while(scanf("%lf",&x)!=EOF&&x)
{
if(x>0)
{
for(i=32;i>=1;i--)
{
temp=pow(x,1.0/i);
y1=ceil(temp);
y2=floor(temp);
if(fabs(y1-temp)<1e-12||fabs(y2-temp)<1e-12)
{
printf("%d\n",i);
break;
}
}
}
else
{
x=-x;
for(i=31;i>=1;i-=2)
{
temp=pow(x,1.0/i);
y1=ceil(temp);
y2=floor(temp);
if(fabs(y1-temp)<1e-12||fabs(y2-temp)<1e-12)
{
printf("%d\n",i);
break;
}
}
}
}
return 0;
}