import sys
from bisect import bisect_right

def solve():
   
    podaci = sys.stdin.read().split()
    if not podaci: return
    t_cases = int(podaci[0])
    upiti = [int(x) for x in podaci[1:]]

    
    proizvodi = set()
    proizvodi.add(0)
    proizvodi.add(1)
    
   
    granica = 10**18
    lista_proizvoda = [1]
    
   
    moguci = {1}
    idx = 0
    while idx < len(lista_proizvoda):
        trenutni = lista_proizvoda[idx]
        idx += 1
        for cifra in [2, 3, 4, 5, 6, 7, 8, 9]:
            sledeci = trenutni * cifra
            if sledeci <= granica and sledeci not in moguci:
                moguci.add(sledeci)
                lista_proizvoda.append(sledeci)
    
    
    sortirani_proizvodi = sorted(list(moguci))
    

    
    odgovori = []
    for n in upiti:
        if n < 10:
            odgovori.append(str(n))
        else:
            
            max_p = 1
            temp_n = n
            s_n = str(n)
            
            
            if len(s_n) > 1:
                
                devetke = 9 ** (len(s_n) - 1)
                
                p_cifara = 1
                ima_nulu = False
                for c in s_n:
                    p_cifara *= int(c)
                    if c == '0': ima_nulu = True
                
                granica_pretrage = max(devetke, p_cifara)
                
               
                rez = bisect_right(sortirani_proizvodi, granica_pretrage) + 1
                odgovori.append(str(rez))
            else:
                odgovori.append(str(n))

    sys.stdout.write("\n".join(odgovori) + "\n")

if __name__ == "__main__":
    solve()