classSolution:defopenLock(self, deadends: List[str], target:str)->int:defneighbor(node):
y =list()for i inrange(4):for j in(-1,1):
update =(int(node[i])+ j)%10
one_node = node[:i]+str(update)+ node[i +1:]
y.append(one_node)return y
dead =set(deadends)
queue = collections.deque([('0000',0)])
seen ={'0000'}while queue:
node, depth = queue.popleft()if node == target:return depth
if node in dead:continuefor n in neighbor(node):if n notin seen:
seen.add(n)
queue.append((n, depth +1))return-1