#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=b-1;i>=a;i--)
/*
注意负数的情况,尽管看到有负数,改了代码(但是不对),所以不想再做,不去考虑代码是不是对的
但是自己总是按捺不住,想看题解,看了之后,感觉全无,特别SB
*/
int main(){
ll n;
while(scanf("%lld",&n)==1&&n){
int ans=1;
rep(i,2,1e6){
ll tmp=abs(n);int t=0;
while(tmp%i==0){
tmp/=i;
t++;
}
if(tmp==1){
if(n<0&&(t&1)) {ans=t;break;}
if(n>0) {ans=t;break;}
}
}
printf("%d\n",ans);
}
return 0;
}