#include <iostream>
#include <vector>
using namespace std;

bool vec_postoji(long long a, vector<long long>& v) {
    for (long long x : v)
        if (x == a) return true;
    return false;
}

long long proizvod(long long x) {
    long long p = 1;
    while (x > 0) {
        p *= (x % 10);
        x /= 10;
    }
    return p;
}

int main() {
int t;
cin >> t;
vector<long long> n(t);
for (int i = 0; i < t; i++) cin >> n[i];
vector<long long> svi_proizvodi;
for(long long i=1;i<=1000000; i++) {
long long p = proizvod(i);
if(!vec_postoji(p, svi_proizvodi))
svi_proizvodi.push_back(p);
}
for(int i=0;i<t;i++){
    long long granica = min(n[i], (long long)1000000);
    vector<long long> pomnozene_cifre;
        for(long long j=1;j<=granica;j++) {
            long long p=proizvod(j);
                if(!vec_postoji(p, pomnozene_cifre))
                pomnozene_cifre.push_back(p);
}
if (n[i]>1000000){
for (long long p : svi_proizvodi)
    if(!vec_postoji(p, pomnozene_cifre))
    pomnozene_cifre.push_back(p);
}
cout << pomnozene_cifre.size() << '\n';
}
return 0;
}