S = list(map(lambda x:ord(x), input())) n = len(S) if n==1: print(1) exit() mod = 10**9+7 p = 1007 mod2 = mod dp = [0]*(n//2+1) dp[0] = 1 ans = 0 # print(SR) pp = pow(p, mod2-2, mod2) for i in range(n//2): left = 0 right = 0 p_ = 1 t = dp[i] ans += t for j in range(i, n//2): left += p_*S[j] left %= mod right = right*p+S[~j] right %= mod p_ *= p p_ %= mod if left==right: dp[j+1] += t dp[j+1] %= mod ans += dp[-1] print(ans)