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