// No.52 よくある文字列の問題 // https://yukicoder.me/problems/no/52 // #include #include #include #include using namespace std; int solve(string &S); struct status { string s; string rem; }; int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); string S; cin >> S; int ans = solve(S); cout << ans << endl; } int solve(string &S) { if (S.size() == 1) return 1; unordered_set ans; deque que; que.push_back(status{"", S}); while (!que.empty()) { status t; t = que.front(); que.pop_front(); if (t.rem.size() != 2) { que.push_back(status{t.s + t.rem[0], t.rem.substr(1)}); que.push_back(status{t.s + t.rem[t.rem.size()-1], t.rem.substr(0, t.rem.size()-1)}); } else { ans.insert(t.s + t.rem[0] + t.rem[1]); ans.insert(t.s + t.rem[1] + t.rem[0]); } } return ans.size(); }