
/// Trie (normal)...

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 5000050

struct Trie
{
    ll nextt[maxn][26];
    ll endmark[maxn];
    ll sz;
    Trie()
    {
        clear();
    }
    void clear()
    {
        sz=0;
        memset(nextt[0],-1,sizeof(nextt[0]));
        memset(endmark,0,sizeof endmark);
    }
    void add(const char* str)
    {
        ll v=0;
        ll len=strlen(str);
        for(ll i = 0; i< len; ++i)
        {
            int id = str[i] - 'a';
            if(nextt[v][id] == -1)
            {
                nextt[v][id]=++sz;
                memset(nextt[sz],-1,sizeof(nextt[sz]));
            }
            v=nextt[v][id];
        }
        endmark[v]++;
    }
    ll dfs(const char* s)
    {
        ll v=0;
        ll len=strlen(s);
        for(ll i=0; i<len ; i++)
        {
            ll id=s[i]-'a';
            if(nextt[v][id]==-1)
            {
                return 0;
            }
            v=nextt[v][id];
        }
        return endmark[v];
    }
};
Trie tree;

char s[100005];
int main()
{
    tree.clear();
    scanf(" %s",s);
    tree.add(s);
    tree.add(s);
    cout<<tree.dfs(s)<<endl;
    return 0;
}
