#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:336777216")
using namespace std;
const int MAXN = 100000 + 10;
int N;
bool ok[1 << 26];
int B[MAXN];
char S[MAXN];
int DP[MAXN];
int there[1 << 26];
void Work() {
  ok[0] = true;
  for (int i = 0; i < 26; i++) ok[1 << i] = true;
  scanf("%s", S);
  N = strlen(S);
  B[0] = 0;
  for (int i = 1; i <= N; i++) B[i] = B[i - 1] ^ (1 << (S[i - 1] - 'a'));
  memset(there, 10, sizeof(there));
  DP[0] = 0;
  there[0] = 0;
  for (int i = 1; i <= N; i++) {
    DP[i] = there[B[i]] + 1;
    for (int j = 0; j < 26; j++) DP[i] = min(DP[i], there[B[i] ^ (1 << j)] + 1);
    there[B[i]] = min(there[B[i]], DP[i]);
  }
  printf("%d\n", DP[N]);
}
int main() {
  Work();
  return 0;
}
