MOD = 10**9 + 7 S = input().strip() N = len(S) # Precompute powers of 2 modulo MOD up to N pow2 = [1] * (N + 2) for i in range(1, N + 2): pow2[i] = (pow2[i-1] * 2) % MOD from collections import defaultdict char_positions = defaultdict(list) for idx, c in enumerate(S): char_positions[c].append(idx) sum_sub = 0 for c in char_positions: positions = char_positions[c] sum_c = 0 for j in range(len(positions)): pos = positions[j] if j == 0: sum_c = pow2[pos] continue exponent = N - pos - 1 if exponent < 0: term = 0 else: term = (sum_c * pow2[exponent]) % MOD sum_sub = (sum_sub + term) % MOD sum_c = (sum_c + pow2[pos]) % MOD # Compute N * pow2[N-1] mod MOD pow_N_1 = pow2[N-1] total = (pow_N_1 * N) % MOD ans = (total - sum_sub) % MOD print(ans)