from collections import deque
import re

def solution(begin, target, words):
    answer = 0
    queue = deque([[begin, 0]])
    visited = {begin:1}
    while queue :
        temp, n = queue.popleft()
        if temp == target : return n
        for i in range(len(temp)) :
            a = temp[:i] + "." + temp[i+1:]
            p = re.compile(a)
            for j in words :
                if j not in visited and p.match(j) :
                    visited[j] = 1
                    queue.append([j, n+1]) 
    return answer