#include <bits/stdc++.h>
using namespace std;
template <typename T>
void mymax(T &_a, T _b) {
  if (_a < _b) _a = _b;
}
template <typename T>
void mymin(T &_a, T _b) {
  if (_a > _b) _a = _b;
}
void print(int _x) { printf("%d ", _x); }
void print(long long _x) { printf("%I64d ", _x); }
template <typename T>
void print(T _a[], int _s, int _t) {
  for (int i = _s; i <= _t; i++) cout << _a[i] << " ";
  cout << endl;
}
struct InputReader {
  static const int bs = 1000000;
  char buf[bs];
  int p;
  InputReader() : p(bs) {}
  void flush() {
    p = 0;
    fread(buf, 1, bs, stdin);
  }
  char c() {
    if (p >= bs) flush();
    return buf[p++];
  }
  int operator()() {
    int ans = 0;
    char ch = c();
    while (ch < '0' || ch > '9') ch = c();
    while (ch >= '0' && ch <= '9') {
      ans *= 10;
      ans += ch - '0';
      ch = c();
    }
    return ans;
  }
  void nextlet(int &x) {
    char ch = c();
    while (ch < 'a' || ch > 'z') ch = c();
    if (ch == 'c') x = 1;
    if (ch == 'd') x = 2;
    if (ch == 'q') x = 3;
  }
  long long readll() {
    long long ans = 0LL;
    char ch = c();
    while (ch < '0' || ch > '9') ch = c();
    while (ch >= '0' && ch <= '9') {
      ans *= 10LL;
      ans += ch - '0';
      ch = c();
    }
    return ans;
  }
} in;
inline void read(int &x) { x = in(); }
inline void read2(int &x, int &y) {
  x = in();
  y = in();
}
inline void read3(int &x1, int &x2, int &x3) {
  x1 = in();
  x2 = in();
  x3 = in();
}
string s;
int cnt[29];
int len;
int main() {
  memset(cnt, 0, sizeof(cnt));
  cin >> s;
  len = s.length();
  for (int i = 0; i < len; i++) cnt[s[i] - 'a']++;
  int odd = 0;
  for (int i = 0; i < 26; i++)
    if (cnt[i] & 1) odd++;
  if (odd)
    cout << odd << endl;
  else
    cout << 1 << endl;
  return 0;
}
