But you don't have to count through all of them. Only until you get to outlook, which is a very long way from the end of the list.
Now if you want to get EVERY useful program from that set which could exist - then you'll have to test every number in the list, and that would take forever even for this reduced subset.
But for just finding one of them - you only have to count until you find that ONE.
Even so the moment you put that upper bound on it you make it possible to use faster algorythms than counting to do the finding with - you could optimize it by using a better data type than a list for example, and using fuzzy logic to search the numbers for patterns you would expect to find in something that's useful (like the string representation of the word "email") to narrow down the search space further.
It would still not be nearly as efficient as doing it the programming way - but that's not the point, the point is merely that it's theoretically possible to do - as proof that programming is still fundamentally mathematics. Just very, very efficient mathematics that make use of quite a bit of intuition that's hard to replicate in generator algorythms.