/*一道很简单的数论题,求可以开的最大N次方,直接用POW函数,不过在比较答案是,DOUBLE的比较,精度要用1E-12,还有很囧的就是,居然他有负数的存在,题目明明说了最小是2,不知道哪里来的负数*/
#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
#include<algorithm>
#define M 1000
using namespace std;
int main()
{
freopen("in.txt","r",stdin);
long long n;
int ans;
while(scanf("%I64d",&n)&&n)
{
if(n>0)
for(int i=32;i>=1;i--)
{
double b=pow(n,1.0/i);
double b1=floor(b);
double b2=ceil(b);
// double sum=1;
if(fabs(b-b1)<1e-12||fabs(b2-b)<1e-12){printf("%d\n",i);break;}
}
else
{
n=-n;
for(int i=32;i>=1;i--)
{
if(i%2==0)continue;
double b=pow(n,1.0/i);
double b1=floor(b);
double b2=ceil(b);
//double sum=1;
if(fabs(b-b1)<1e-12||fabs(b2-b)<1e-12){printf("%d\n",i);break;}
}
}
//printf("%d\n",ans);
}
}