#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
inline void chmin(A &a, B b) {
  if (a > b) a = b;
}
template <typename A, typename B>
inline void chmax(A &a, B b) {
  if (a < b) a = b;
}
const long long INF = 1001001001001001001ll;
long long N;
string S;
long long b[222222];
signed main() {
  cin >> S;
  N = S.size();
  for (long long i = 0; i < (N); i++) {
    b[i + 1] = b[i] ^ (1 << (S[i] - 'a'));
  }
  map<long long, long long> dp;
  dp[0] = 0;
  for (long long i = 0; i < (N - 1); i++) {
    long long hoge = INF;
    for (long long j = 0; j < (26); j++) {
      long long tmp = b[i + 1] ^ (1 << j);
      if (dp.find(tmp) != dp.end()) {
        chmin(hoge, dp[tmp] + 1);
      }
    }
    if (dp.find(b[i + 1]) != dp.end()) continue;
    dp[b[i + 1]] = hoge;
  }
  long long ans = INF;
  if (dp.find(b[N]) != dp.end()) ans = dp[b[N]] + 1;
  for (long long i = 0; i < (26); i++) {
    long long tmp = b[N] ^ (1 << i);
    if (dp.find(tmp) != dp.end()) chmin(ans, dp[tmp] + 1);
  }
  cout << ans << endl;
  return 0;
}
