from functools import lru_cache
def min_deletions(s: str) -> int:
n = len(s)
@lru_cache(None)
def dp(i, j):
if i > j:
return 0
if i == j:
return 1
res = dp(i + 1, j) + 1
for k in range(i + 1, j + 1):
if s[i] == s[k]:
res = min(res, dp(i + 1, k - 1) + dp(k, j))
return res
return dp(0, n - 1)
# --------- Main stdin/stdout section ---------
if __name__ == "__main__":
try:
s = input().strip()
if s:
print(min_deletions(s))
else:
print(0)
except Exception as e:
print(0)
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGxydV9jYWNoZQoKZGVmIG1pbl9kZWxldGlvbnMoczogc3RyKSAtPiBpbnQ6CiAgICBuID0gbGVuKHMpCgogICAgQGxydV9jYWNoZShOb25lKQogICAgZGVmIGRwKGksIGopOgogICAgICAgIGlmIGkgPiBqOgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGlmIGkgPT0gajoKICAgICAgICAgICAgcmV0dXJuIDEKCiAgICAgICAgcmVzID0gZHAoaSArIDEsIGopICsgMQogICAgICAgIGZvciBrIGluIHJhbmdlKGkgKyAxLCBqICsgMSk6CiAgICAgICAgICAgIGlmIHNbaV0gPT0gc1trXToKICAgICAgICAgICAgICAgIHJlcyA9IG1pbihyZXMsIGRwKGkgKyAxLCBrIC0gMSkgKyBkcChrLCBqKSkKICAgICAgICByZXR1cm4gcmVzCgogICAgcmV0dXJuIGRwKDAsIG4gLSAxKQoKCiMgLS0tLS0tLS0tIE1haW4gc3RkaW4vc3Rkb3V0IHNlY3Rpb24gLS0tLS0tLS0tCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICB0cnk6CiAgICAgICAgcyA9IGlucHV0KCkuc3RyaXAoKQogICAgICAgIGlmIHM6CiAgICAgICAgICAgIHByaW50KG1pbl9kZWxldGlvbnMocykpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoMCkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgwKQo=