#include <bits/stdc++.h>
using namespace std;
#define int long long
int ans[500005];
void precomp(){
for(int i = 2; i <= 500000; i++)ans[i] = 1e13;
// precomp divisor
vector<int> div[500005];
for (int i = 3; i <= 500000; i++) {
int temp = i;
while(true) {
temp += i;
if (temp <= 500000) div[temp].push_back(i);
else break;
}
}
ans[1] = 1;
for(int i = 2; i <= 500000; i++){
if(i%2==0) continue;
if(i>2)ans[i] = min(ans[i], ans[i-2]+1);
for (auto& j : div[i]) {
ans[i] = min(ans[i], ans[j-2] + ans[i/j]);
}
}
for(int i = 2; i <= 500000; i++)ans[i] = (ans[i] == 1e13? -1:ans[i]);
}
void fun(){
int m;
cin >> m;
cout << ans[m] << '\n';
}
main() {
precomp();
int t; cin >> t;
while(t--)fun();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKaW50IGFuc1s1MDAwMDVdOwoKdm9pZCBwcmVjb21wKCl7Cglmb3IoaW50IGkgPSAyOyBpIDw9IDUwMDAwMDsgaSsrKWFuc1tpXSA9IDFlMTM7CgkvLyBwcmVjb21wIGRpdmlzb3IKCXZlY3RvcjxpbnQ+IGRpdls1MDAwMDVdOwoJZm9yIChpbnQgaSA9IDM7IGkgPD0gNTAwMDAwOyBpKyspIHsKCQlpbnQgdGVtcCA9IGk7CgkJd2hpbGUodHJ1ZSkgewoJCQl0ZW1wICs9IGk7CgkJCWlmICh0ZW1wIDw9IDUwMDAwMCkgZGl2W3RlbXBdLnB1c2hfYmFjayhpKTsKCQkJZWxzZSBicmVhazsKCQl9Cgl9CgkKCWFuc1sxXSA9IDE7Cglmb3IoaW50IGkgPSAyOyBpIDw9IDUwMDAwMDsgaSsrKXsKCQlpZihpJTI9PTApIGNvbnRpbnVlOwoJCWlmKGk+MilhbnNbaV0gPSBtaW4oYW5zW2ldLCBhbnNbaS0yXSsxKTsKCQlmb3IgKGF1dG8mIGogOiBkaXZbaV0pIHsKCQkJYW5zW2ldID0gbWluKGFuc1tpXSwgYW5zW2otMl0gKyBhbnNbaS9qXSk7CgkJfQoJfQoJCglmb3IoaW50IGkgPSAyOyBpIDw9IDUwMDAwMDsgaSsrKWFuc1tpXSA9IChhbnNbaV0gPT0gMWUxMz8gLTE6YW5zW2ldKTsKfQoKdm9pZCBmdW4oKXsKCWludCBtOwoJY2luID4+IG07Cgljb3V0IDw8IGFuc1ttXSA8PCAnXG4nOwp9CgptYWluKCkgewoJcHJlY29tcCgpOwoJaW50IHQ7IGNpbiA+PiB0OwoJd2hpbGUodC0tKWZ1bigpOwp9