#include <bits/stdc++.h>
using namespace std;
using LL = long long;
string S;
int N;
int main(void) {
  cin >> S;
  N = S.size();
  map<int, vector<int>> mp;
  vector<int> vec;
  map<int, int> small;
  int has = 0;
  mp[has].push_back(0);
  vec.push_back(has);
  int i = 0;
  for (char c : S) {
    ++i;
    has ^= (1 << (c - 'a'));
    mp[has].push_back(i);
    vec.push_back(has);
  }
  vector<int> dp(N + 1);
  small[0] = 0;
  for (int x = 1; x <= N; ++x) {
    int maybe = dp[x - 1] + 1;
    if (small.count(vec[x])) {
      maybe = min(maybe, small[vec[x]]);
    }
    dp[x] = maybe;
    if (!small.count(vec[x]))
      small[vec[x]] = dp[x];
    else
      small[vec[x]] = min(small[vec[x]], dp[x]);
  }
  cout << max(dp[N], 1) << endl;
  return 0;
}
