#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
const int inf = 0x3f3f3f3f;
template <typename T>
inline bool chkmin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
template <typename T>
inline void read(T &x) {
  x = 0;
  int _f(0);
  char ch = getchar();
  while (!isdigit(ch)) _f |= (ch == '-'), ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  x = _f ? -x : x;
}
inline void file() {}
int n, Min[1 << 26], x[N];
char s[N];
int main() {
  file();
  memset(Min, inf, sizeof(Min));
  scanf("%s", s + 1);
  n = strlen(s + 1);
  Min[0] = 0;
  for (int i = 1, iE = n; i <= iE; ++i) {
    x[i] = x[i - 1] ^ (1 << (s[i] - 'a'));
    int ret = Min[x[i]];
    for (int j = 0, jE = 25; j <= jE; ++j) chkmin(ret, Min[x[i] ^ (1 << j)]);
    chkmin(Min[x[i]], ret + 1);
  }
  printf("%d\n", Min[x[n]]);
  return 0;
}
