# Python, with num2words, <s>97</s> 113 bytes
+16 bytes (forgot the hyphenation that num2words applies which does not actually change the results of any of the test cases, even though `23` and `577` each have a hyphen)
<! language: lang-python -->
from num2words import*
lambda n:n!=4 and 1+f(len(num2words(n).replace('and','').replace(' ','').replace('-','')))
Just counts up the number of steps, returns `False` for `0`, but works for huge and negative integers too:
>>> for test in (1,4,7,23,577,600,-1*2**96,3**96):
... print('test: {0} -> {1}'.format(test, f(test)))
...
test: 1 -> 3
test: 4 -> False
test: 7 -> 2
test: 23 -> 5
test: 577 -> 6
test: 600 -> 4
test: -79228162514264337593543950336 -> 4
test: 6362685441135942358474828762538534230890216321 -> 5
Note: this is leaving in any `,` since none appear in `[1,1000]`