#include <bits/stdc++.h>
using namespace std;
template <typename T>
void scan(T &angka) {
  angka = 0;
  char input = getchar();
  T kali = 1;
  while (!(48 <= input && input <= 57)) {
    if (input == '-') kali = -1;
    input = getchar();
  }
  while (48 <= input && input <= 57)
    angka = (angka << 3) + (angka << 1) + input - 48, input = getchar();
  angka *= kali;
}
template <typename T1, typename T2>
void scan(T1 &angka1, T2 &angka2) {
  scan(angka1);
  scan(angka2);
}
const int MAXN = 200000;
int panjang, dp[MAXN + 5], kondisi = 0;
map<int, int> posisi;
string input;
int ubah(char a) { return a - 'a'; }
int main() {
  posisi.clear();
  cin >> input;
  panjang = input.length();
  dp[0] = 0;
  posisi[kondisi] = 0;
  for (int i = 1; i <= panjang; i++) {
    kondisi ^= (1 << ubah(input[i - 1]));
    assert(kondisi < (1 << 26));
    dp[i] = panjang + 1;
    if (posisi.find(kondisi) != posisi.end())
      dp[i] = min(dp[i], dp[posisi[kondisi]] + 1);
    else
      posisi[kondisi] = i;
    for (int j = 0; j < 26; j++) {
      kondisi ^= (1 << j);
      assert(kondisi < (1 << 26));
      if (posisi.find(kondisi) != posisi.end())
        dp[i] = min(dp[i], dp[posisi[kondisi]] + 1);
      kondisi ^= (1 << j);
    }
    assert(dp[i] <= i);
  }
  cout << dp[panjang] << endl;
}
