#define _CRT_SECURE_NO_WARNINGS #include using namespace std; #define len(n) (int)n.length() #define pb push_back #define ll long long #define make_pair mkp #define REP(i, n) for(int i = 0;i < n;i++) #define REPR(i, n) for(int i = n;i >= 0;i--) #define FOR(i, m, n) for(int i = m;i < n;i++) #define ALL(v) (v).begin(), (v).end() #ifdef DBGPRT #define dbg(n) cerr << "//" << #n << ":" << n < LLARR; #define INF 999999999 const double PI = 3.1415926535897932384626433832795; set ans; void frac(string s, string a, bool isFront, int n) { if (len(a) == n) { ans.insert(a); return; } if (isFront) { a += s[0]; s.erase(s.begin()); } else { a += s[len(s)-1]; s.pop_back(); } frac(s,a,true, n); frac(s,a,false, n); } int main() { ios::sync_with_stdio(false); string s; cin >> s; string a; frac(s,a,true, len(s)); frac(s,a,false, len(s)); cout << ans.size() << endl; return 0; }