MOD = 10**9 + 7 def solve_test_case(s): n = len(s) left_distance = [0] * n right_distance = [0] * n last_gold = -1 for i in range(n): if s[i] == "<": last_gold = i elif s[i] == ">": last_gold = -1 elif s[i] == "o": last_gold = i left_distance[i] = i - last_gold last_gold = -1 for i in range(n-1, -1, -1): if s[i] == ">": last_gold = i elif s[i] == "<": last_gold = -1 elif s[i] == "o": last_gold = i right_distance[i] = last_gold - i has_gold = False num_unknowns = 0 for i in range(n): if s[i] == "o": has_gold = True elif s[i] == ".": num_unknowns += 1 if not has_gold: return 0 count = pow(2, num_unknowns, MOD) for i in range(n): if s[i] == ".": if left_distance[i] == 0 and right_distance[i] == 0: count = 0 break elif left_distance[i] == 0 or right_distance[i] == 0: pass elif left_distance[i] + right_distance[i] != 1: count = 0 break return count % MOD T = int(input()) for i in range(T): s = input().strip() result = solve_test_case(s) print("Case #{}: {}".format(i+1, result))