package main import . "fmt" var b1, b2 []byte var m = map[string]bool{} func main() { var s string Scan(&s) b1 = []byte(s) b2 = make([]byte, len(b1)) walk(0, 0, len(b1)-1) Println(len(m)) } func walk(i, l, r int) { if i >= len(b2) { m[string(b2)] = true return } b2[i] = b1[l] walk(i+1,l+1,r) b2[i] = b1[r] walk(i+1,l,r-1) }