Given two words (beginWord _and _endWord), and a dictionary's word list, find the length of shortest transformation sequence from beginWord _to _endWord, such that:
Only one letter can be changed at a time.
Each transformed word must exist in the word list. Note that _beginWord _is _not _a transformed word.
Note:
Return 0 if there is no such transformation sequence.
All words have the same length.
All words contain only lowercase alphabetic characters.
You may assume no duplicates in the word list.
You may assume _beginWord _and _endWord _are non-empty and are not the same.
Example 1:
Input:
beginWord = "hit",
endWord = "cog",
wordList = ["hot","dot","dog","lot","log","cog"]
Output: 5
Explanation: As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",
return its length 5.
Example 2:
Input:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log"]
Output: 0
Explanation: The endWord "cog" is not in wordList, therefore no possible transformation.
BFS -- Altering one character at a time for beginWord, and see if it's in the wordList, if yes, then add to the toSearch list; for the word in toSearch list, do the same: altering one character at a time, see if it's in wordList, so on and so forth.
Note: to avoid cyclical search, we need to remove the "searched" word from the wordList