#include <bits/stdc++.h>
using namespace std;
inline void Fail() {
  printf("0");
  exit(0);
}
const int maxn = 200005;
int n;
int dp[maxn], a[maxn];
char c[maxn];
map<int, int> m;
int cur;
int main() {
  scanf("%s", c);
  n = strlen(c);
  for (int(i) = 0; (i) < n; i++) a[i] = c[i] - 'a';
  m[0] = -1;
  for (int(i) = 0; (i) < n; i++) {
    dp[i] = 1e9;
    cur ^= (1 << a[i]);
    if (m.find(cur) != m.end())
      dp[i] = min(dp[i], (m[cur] == -1 ? 0 : dp[m[cur]]) + 1);
    else
      m[cur] = i;
    for (int(j) = 0; (j) < 26; j++) {
      int tmp = cur ^ (1 << j);
      if (m.find(tmp) != m.end())
        dp[i] = min(dp[i], (m[tmp] == -1 ? 0 : dp[m[tmp]]) + 1);
    }
    dp[i] = min(dp[i], (!i ? 0 : dp[i - 1]) + 1);
  }
  printf("%d", dp[n - 1]);
  return 0;
}
