import sys
import re
import math
import bisect

#[left, right)の文字列を並び替えて回文が作れるかどうか
def is_pal(left, right):
    n_odd = 0
    n_even = 0
    for c, locs in c_loc.items():
        #各locsについて、left以上right未満である要素の数をカウント
        l_idx = bisect.bisect_left(locs, left)
        r_idx = bisect.bisect_left(locs, right)
        n = r_idx - l_idx
#        print(n)
        if n % 2 == 0:
            n_even += 1
        else:
            n_odd += 1
    return n_odd <= 1

#与えられたインデックスから文字列の最後まで、回文が作れるかどうかチェック
#最少の分割数を返す
def solve(s_idx):
    if s_idx == N-1:
        return 1
    
    if s_idx == N:
        return 0

    res = 9999999
    for e_idx in range(s_idx+1, N+1):
        if is_pal(s_idx, e_idx):
            #print(s_idx, e_idx, S[s_idx:e_idx])
            tmp = solve(e_idx)
            res = min(res, tmp)
    return res + 1

S = input()
N = len(S)
c_loc = {}
for i in range(0, len(S)):
    c = S[i]
    tmp = c_loc.get(c, [])
    tmp.append(i)
    c_loc[c] = tmp

print(solve(0))