| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | func minMutation(start string, end string, bank []string) int {	src, dst := -1, -1	for i := range bank {		if bank[i] == start {			src = i		} else if bank[i] == end {			dst = i		}	}	if dst == -1 {		return -1	} else if src == dst {		return 0	}	if src == -1 {		bank = append(bank, start)		src = len(bank) - 1	}	n := len(bank)	dist := make([]int, n)	queue := []int{src}	for len(queue) != 0 { // BFS		cur := queue[0]		queue = queue[1:]		for i := 0; i < n; i++ {			if i != cur && dist[i] == 0 && isMutable(bank[cur], bank[i]) {				dist[i] = dist[cur] + 1				queue = append(queue, i)			}		}		if dist[dst] != 0 {			return dist[dst]		}	}	return -1}func isMutable(a, b string) bool {	cnt := 0	for i := range a {		if a[i] != b[i] {			cnt++		}	}	return cnt == 1}
 |