Another interesting puzzle :-

Transform One String to Another

Let S and T be strings and D a set of strings. You can say that S produces T if there exists a sequence of strings, SEQ=[s1, s2, …, sn-1] which meets these criteria:

s0 = S

sn-1 = T

All members of SEQ belong to set D

Adjacent strings have the same length and differ in exactly one character.

For example, given the set {“cat”, “bar”, “bat”}, you can say that “cat” produces “bar” by

[“cat”, “bat”, “bar”]

Or, given the set {“cat”, “red”, “bat”}, you can say that “cat” does not produce “red”.

Given a set D and two strings S and T, write a function to determine if S produces T. Assume that all > characters are lowercase letters. If S does produce T, output the length of a shortest production sequence; otherwise, output -1.