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])
}