#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 28;
const long long LLINF = 1LL << 60;
const double EPS = 1e-9;
int main() {
  map<int, int> mp;
  int sum = 0;
  int bit = 0;
  vector<int> range[222222];
  int dp[222222];
  fill_n(dp, 222222, INF);
  string S;
  cin >> S;
  mp[0] = -1;
  for (int i = 0; i < S.size(); i++) {
    bit ^= (1 << (S[i] - 'a'));
    if (mp.find(bit) != mp.end()) {
      range[mp[bit] + 1].push_back(i + 1);
    } else {
      mp[bit] = i;
    }
  }
  dp[0] = 0;
  for (int i = 0; i <= S.size(); i++) {
    dp[i + 1] = min(dp[i] + 1, dp[i + 1]);
    for (int j = 0; j < range[i].size(); j++) {
      dp[range[i][j]] = min(dp[i], dp[range[i][j]]);
    }
  }
  cout << dp[S.size()] + (dp[S.size()] == 0) << endl;
  return (0);
}
