/*
  基本思路是最大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;   
}