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 G = [set() for _ in range(n//2+1)] dp = [0]*(n//2+1) # print(SR) pp = pow(p, mod2-2, mod2) for i in range(n//2): left = 0 right = 0 p_ = 1 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: G[i].add(j+1) # print(G) dp[0] = 1 ans = 0 for i in range(n//2+1): ans += dp[i] ans %= mod for v in G[i]: dp[v] += dp[i] dp[v] %= mod print(ans)