func shortestToChar(S string, C byte) []int {
dis := make([]int, len(S))
for i := 0; i < len(S); i++ {
dis[i] = 10001
}
last := -10001
for i := 0; i < len(S); i++ {
if S[i] == C {
if last < 0 {
last = -1
}
for j := last+1; j <= i; j++ {
if dis[j] > i - j {
dis[j] = i - j
}
}
last = i
} else if last >= 0 {
dis[i] = i - last
}
}
return dis
}