#include <bits/stdc++.h>
using namespace std;
template <class T, class S>
bool chmax(T &a, const S &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T, class S>
bool chmin(T &a, const S &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
long long gcd(long long n, long long m) { return (m ? gcd(m, n % m) : n); }
long long lcm(long long n, long long m) { return n / gcd(n, m) * m; }
signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(20);
  string s;
  cin >> s;
  int n = s.size();
  int tmp = 0;
  vector<int> sum(n + 1);
  for (int i = 0; i < (n); i++) {
    tmp ^= (1 << (s[i] - 'a'));
    sum[i + 1] = tmp;
  }
  vector<int> ans(n + 1, 1000000000000000000);
  ans[0] = 0;
  vector<int> mp(1 << 26);
  for (int i = 0; i < (n); i++) {
    for (int j = 0; j < (26); j++) {
      if ((sum[i + 1] ^ (1 << j)) == 0 || mp[sum[i + 1] ^ (1 << j)] != 0) {
        chmin(ans[i + 1], mp[sum[i + 1] ^ (1 << j)] + 1);
      }
    }
    if (sum[i + 1] == 0 || mp[sum[i + 1]] != 0)
      chmin(ans[i + 1], mp[sum[i + 1]] + 1);
    if (sum[i + 1] != 0) {
      if (mp[sum[i + 1]])
        chmin(mp[sum[i + 1]], ans[i + 1]);
      else
        mp[sum[i + 1]] = ans[i + 1];
    }
  }
  cout << ans[n] << '\n';
}
