#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, -1, 0, 0, 1, 1, -1, -1};
int dy[] = {0, 0, -1, 1, -1, 1, 1, -1};
const int INF = 1e9;
const long long INF_LL = (long long)9e18 - 1LL;
const unsigned long INF_ULL = (unsigned long)1e19 - 1ULL;
const int NONE = -1;
const long long MOD = (long long)1e9 + 7;
const int N_MAX = 2e5 + 10;
const int M_MAX = 1 << 26;
const int DATA_MAX = 1010;
int N;
string S;
int dp[M_MAX];
int a[N_MAX];
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> S;
  N = S.size();
  a[0] = 0;
  for (int(i) = (0); (i) < (N); (i)++) {
    a[i + 1] = a[i] ^ (1 << (S[i] - 'a'));
  }
  for (int(i) = (0); (i) < (M_MAX); (i)++) {
    dp[i] = INF;
  }
  dp[a[0]] = 0;
  int x;
  for (int(i) = (1); (i) < (N); (i)++) {
    x = 0;
    dp[a[i]] = min(dp[a[i]], dp[a[i] ^ x] + 1);
    x = 1;
    for (int(j) = (0); (j) < (26); (j)++) {
      dp[a[i]] = min(dp[a[i]], dp[a[i] ^ x] + 1);
      x *= 2;
    }
  }
  cout << dp[a[N]] << endl;
  return 0;
}
