#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
const int N=2e6+5,P=13331;
ull h[N],pw[N],dp[N],f[N],cnt=0;
char s[N],c;
int n;
ull get(int l,int r){
return h[r]-h[l-1]*pw[r-l+1];
}
ull teg(int l,int r){
return f[l]-f[r+1]*pw[r-l+1];
}
int main(){
do{
c=getchar();
s[++n]=c;
}while(c!=EOF);
pw[0]=1;
for(int i=1;i<=n;i++){
pw[i]=pw[i-1]*P;
h[i]=h[i-1]*P+s[i];
}
for(int i=n;i>=1;i--){
f[i]=f[i+1]*P+s[i];
}
for(int i=1;i<=n;i++){
if(get(1,i>>1)==teg(i-(i>>1)+1,i))
dp[i]=dp[i>>1]+1;
cnt+=dp[i];
}
cout<<cnt;
return 0;
}