Given `begin_word`, `end_word`, and a `word_list`, return the number of words in the shortest transformation sequence from begin_word to end_word, where each step changes exactly one letter and every intermediate word is in word_list. The count includes both endpoints. Return 0 if no sequence exists.