#include <bits/stdc++.h>
template <class T>
inline bool cmax(T& a, const T& b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
inline bool cmin(T& a, const T& b) {
  return a > b ? a = b, 1 : 0;
}
using namespace std;
const int N = 2e5 + 5, L = (1 << 26) + 5;
char s[N];
int a[N], f[N], pos[L], n;
int main() {
  scanf("%s", s + 1), n = strlen(s + 1);
  for (register int i = (1), I = (n) + 1; i < I; ++i)
    a[i] = a[i - 1] ^ (1 << (s[i] - 'a'));
  memset(pos, -1, sizeof(pos));
  pos[0] = 0;
  for (register int i = (1), I = (n) + 1; i < I; ++i) {
    f[i] = 233333;
    for (register int j = (0), I = (25) + 1; j < I; ++j)
      if (pos[a[i] ^ (1 << j)] != -1) cmin(f[i], f[pos[a[i] ^ (1 << j)]] + 1);
    pos[a[i]] != -1 ? cmin(f[i], f[pos[a[i]]] + 1) : pos[a[i]] = i;
  }
  printf("%d\n", f[n]);
  return 0;
}
