#include <iostream> #include <algorithm> #include <vector> #include <map> #include <string> #include <numeric> #include <cstring> #include <cmath> #include <set> #include <queue> #include <stack> const int MOD = 1e9 + 7; const int iINF = 1000000000; const long long int llINF = 1000000000000000000; #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; using ll = long long int; using P = pair<int, int>; using edge = struct{int to; int cost;}; int dfs(int i) { } int main() { string S; cin >> S; set<string> st; for(int i =0; i < (1 << (S.size() - 1)); i++) { string ans; int s = 0; int t = S.size() - 1; for(int j = 0; j < S.size() - 1; j++) { if((i >> j) % 2) ans += S[s++]; else ans += S[t--]; } ans += S[s]; st.insert(ans); } cout << st.size() << endl; return 0; }