# 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]`