#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

typedef long long ll;

ll fact(int x){
  ll res = 1;
  for(ll i = 2; i <= x; i++){
    res *= i;
  }
  return res;
}

int main(){
  string s;
  int cnt[128];

  while(cin >> s){
    memset(cnt, 0, sizeof(cnt));
    for(int i = 0; i < s.length(); i++){
      cnt[s[i]]++;
    }

    vector<int> v;
    int oddCnt = 0;

    for(int i = 'a'; i <= 'z'; i++){
      if(cnt[i] % 2 != 0){
        oddCnt++;
        cnt[i]--;
      }
      if(cnt[i] != 0){
        v.push_back(cnt[i] / 2);
      }
    }

    if(oddCnt > 1){
      cout << "0\n";
      continue;
    }

    ll ans = fact(s.length() / 2);

    for(int i = 0; i < (int)v.size(); i++){
      ans /= fact(v[i]);
    }

    cout << ans << endl;
  }
}