using System.Collections;

internal class Program
{
    static long ProizvodCifara(long broj)
    {
        long resenje = 1;
        if (broj == 0)
            return 0;
        while (broj > 0)
        {
            resenje *= broj % 10;
            broj /= 10;
        }
        return resenje;
    }
    static long abakus(long ulaz)
    {
        HashSet<long> skup = new HashSet<long>();
        for (int i = 1; i <= ulaz; i++)
        {
            int k = 0;
            if (i % 10 == 0 && !skup.Contains(0L)) { k++; continue; } /* i = a0*/
            if (k == 1 && ((i % 100) - i % 10 == 0)) { k++; i += 9; continue; }/* i=a0b*/
            if (k == 2 && ((i % 1000) - i % 100 == 0)) { i += 99; continue; }/* i=a0bc*/
            if (k == 3 && ((i % 10000) - i % 1000 == 0)) { i += 999; continue; }/* i=a0bcd*/
            if (k == 4 && ((i % 100000) - i % 10000 == 0)) { i += 9999; continue; }/* i=a0bcde*/
            if (k == 5 && ((i % 1000000) - i % 100000 == 0)) { i += 99999; continue; }/* i=a0bcdef*/
            skup.Add(ProizvodCifara(i));
        }
        return skup.Count;
    }
    static void Main(string[] args)
    {
        int Q = int.Parse(Console.ReadLine());
        while (Q > 0)
        {
            Console.WriteLine(abakus(long.Parse(Console.ReadLine())));
            Q--;
        }
    }
}