count words
recursive reduce