#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // NOLINT void dfs(unordered_set &ans, string &s, vector &is, int32_t start, int32_t end) { if (start > end) { string ss; for (auto i : is) { ss.push_back(s[i]); } ans.insert(ss); return; } is.push_back(start); dfs(ans, s, is, start + 1, end); is.pop_back(); is.push_back(end); dfs(ans, s, is, start, end - 1); is.pop_back(); } int main() { string s; cin >> s; unordered_set ans; vector is; dfs(ans, s, is, 0, int32_t(s.size()) - 1); cout << ans.size() << endl; return 0; }