#include <algorithm>
#include <cstdio>
#include <cstring>
#include <map>

const int N = 200000;

char s[N + 1];
std::map<int, int> mi;

int get(int msk)
{
    if (mi.count(msk)) {
        return mi[msk];
    }
    return N;
}

int add(int msk, int val)
{
    if (!mi.count(msk)) {
        mi[msk] = val;
    } else {
        mi[msk] = std::min(mi[msk], val);
    }
}

int main()
{
    scanf("%s", s);
    int n = strlen(s);
    int dp = 0;
    int msk = 0;
    for (int i = 0; i < n; ++ i) {
        add(msk, dp);
        msk ^= 1 << s[i] - 'a';
        dp = get(msk) + 1;
        for (int j = 0; j < 26; ++ j) {
            dp = std::min(dp, get(msk ^ (1 << j)) + 1);
        }
    }
    printf("%d\n", dp);
