#include <bits/stdc++.h>
#define sz (int)1e6
using namespace std;
int getminsteps(int n, int *memo)
{
if( n == 1) return 0;
if( memo[n] != -1) return memo[n];
int r = 1 + getminsteps(n-1,memo);
if(n%2 == 0)
r = min(r,1+getminsteps(n/2,memo));
if(n%3 == 0)
r = min(r,1+getminsteps(n/3,memo));
memo[n] = r;
return r;
}
int main()
{
int t,n,i,ans;
cin >> t;
int memo[sz];
memset(memo, -1, sizeof(memo));
while (t--)
{
cin >> n;
ans = getminsteps(n,memo);
cout << ans << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgc3ogKGludCkxZTYKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGdldG1pbnN0ZXBzKGludCBuLCBpbnQgKm1lbW8pCnsKICBpZiggbiA9PSAxKSByZXR1cm4gMDsKICBpZiggbWVtb1tuXSAhPSAtMSkgIHJldHVybiBtZW1vW25dOwogIGludCByID0gMSArIGdldG1pbnN0ZXBzKG4tMSxtZW1vKTsKICBpZihuJTIgPT0gMCkKICAgIHIgPSBtaW4ociwxK2dldG1pbnN0ZXBzKG4vMixtZW1vKSk7CiAgaWYobiUzID09IDApCiAgICByID0gbWluKHIsMStnZXRtaW5zdGVwcyhuLzMsbWVtbykpOwogIG1lbW9bbl0gPSByOwogIHJldHVybiByOwp9CmludCBtYWluKCkKewogICAgaW50IHQsbixpLGFuczsKICAgIGNpbiA+PiB0OwogICAgaW50IG1lbW9bc3pdOwogICAgbWVtc2V0KG1lbW8sIC0xLCBzaXplb2YobWVtbykpOwogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBhbnMgPSBnZXRtaW5zdGVwcyhuLG1lbW8pOwogICAgICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=