package main import ( "fmt" ) const INF = 100 func min(a, b int) int { if a < b { return a } return b } func main() { var str string var dp [55][55]int fmt.Scan(&str) lens := len(str) str = " " + str for i := 0; i <= lens+2; i++ { for j := 0; j <= lens+2; j++ { dp[i][j] = INF dp[i][j] = INF } } for i := lens; i > 0; i-- { dp[i][i] = 1 for j := i + 1; j <= lens; j++ { if str[i] == str[i+1] { dp[i][j] = min(dp[i][j], dp[i+1][j]) } if str[i] == str[j] { dp[i][j] = min(dp[i][j], dp[i+1][j]) } if str[j] == str[i] { dp[i][j] = min(dp[i][j], dp[i][j-1]) } if str[j] == str[j-1] { dp[i][j] = min(dp[i][j], dp[i][j-1]) } for k := i; k < j; k++{ dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j]) } } } fmt.Println(dp[1][lens]) }