| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | package mainimport "fmt"func main() {	var s string	_, err := fmt.Scanln(&s)	for err == nil {		res := solve(s)		fmt.Println(res)		_, err = fmt.Scanln(&s)	}}func solve(s string) int {	str, rev := []byte(s), []byte(s)	n := len(s)	for l, r := 0, n-1; l < r; l, r = l+1, r-1 {		rev[l], rev[r] = rev[r], rev[l]	}	// dp[i][j] means the LCS of str[:i+1] and rev[:j+1]	dp := make([][]int, n+1)	for i := range dp {		dp[i] = make([]int, n+1)	}	for i := 1; i <= n; i++ {		for j := 1; j <= n; j++ {			if str[i-1] == rev[j-1] {				dp[i][j] = dp[i-1][j-1] + 1			} else {				dp[i][j] = maxInt(dp[i-1][j], dp[i][j-1])			}		}	}	return n - dp[n][n]}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |