This challenge is based on this video. I recommend that you watch it before trying this challenge.
First we define a function. This function (OEIS) takes a integer n as input and outputs the number of letters in the English representation of n (without spaces or hyphens). For example "three" has 5 letters so 3 maps to 5.
As demonstrated in the video starting with any number repeating this process will eventually result in a four, which will map to itself forever.
Here is a crude directed graph showing the orbits of the numbers less than 16:
12 11 \| 15 2 6 1 10 14 13 \ \|/ / / / 7 3-/ 8--/ \| / 9 0 5--/ \ \| \-4
Your challenge is to determine the number of steps that a number will take (or the number of times this function must be applied to a number) before reaching four (i.e. the level on the directed graph pictured).
Forming english numbers
Here is a brief explanation of how one should form english words for this challenge:
The numbers one through nineteen are:
one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen
For numbers greater than nineteen the process is as follows:
If the number has a hundreds place begin with the name of digit in the hundreds place and "hundred".
100 -> "onehundred"
If the remainder is less than twenty append the remainder's English representation.
714 -> "sevenhundredfourteen"
Otherwise if the tens digit is not zero append the proper representation:
2-> twenty 3-> thirty 4-> forty 5-> fifty 6-> sixty 7-> seventy 8-> eighty 9-> ninety
470 -> "fourhundredseventy"
Finally if there is a one's digit append its representation
681 -> "sixhundredeightyone"
For numbers greater than one hundred you should leave out the "and" when counting the number of letters. For instance 577 is "fivehundredseventyseven" which has 23 letters.
Your program must accept all integers greater than 0 and less than 1,000 as input via standard methods.
Your program must output the number of steps required to standard output methods.
This is codegolf so the solution with the fewest bytes wins.
1 -> 3 4 -> 0 7 -> 2 23 -> 5 577 -> 6 600 -> 4