#include <bits/stdc++.h>
const long long INF = LLONG_MAX / 10;
using namespace std;
template <typename T>
void print_to(std::ostream &os, const char *, const char *tail, const T &fst) {
  os << fst << tail;
}
template <typename Fst, typename... Rst>
void print_to(std::ostream &os, const char *del, const char *tail,
              const Fst &fst, const Rst &...rst) {
  os << fst << del;
  print_to(os, del, tail, rst...);
}
template <typename Iter>
void print_to_(std::ostream &os, const char *del, const char *tail, Iter bgn,
               Iter end) {
  for (Iter it = bgn; it != end;) {
    os << *it;
    if (++it != end) {
      os << del;
    } else {
      os << tail;
    }
  }
}
template <typename Fst, typename... Rst>
void println(const Fst &fst, const Rst &...rst) {
  print_to(std::cout, "\n", "\n", fst, rst...);
}
template <typename Fst, typename... Rst>
void print(const Fst &fst, const Rst &...rst) {
  print_to(std::cout, " ", "\n", fst, rst...);
}
template <typename Iter>
void println_(Iter bgn, Iter end) {
  print_to_(std::cout, "\n", "\n", bgn, end);
}
template <typename Iter>
void print_(Iter bgn, Iter end) {
  print_to_(std::cout, " ", "\n", bgn, end);
}
namespace trush {
long long _ = (std::cout.precision(10), std::cout.setf(std::ios::fixed),
               std::cin.tie(0), std::ios::sync_with_stdio(0), 0);
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
string s;
map<char, long long> cnt;
signed main() {
  cin >> s;
  for (char c : s) {
    cnt[c]++;
  }
  long long ans = 0;
  for (auto it = cnt.begin(); it != cnt.end(); it++) {
    if (it->second % 2 == 1) ans++;
  }
  cout << max(1LL, ans) << endl;
}
