## https://yukicoder.me/problems/no/1646 MOD = 998244353 def is_palindrome(word): left = 0 right = len(word) - 1 while left < right: if word[left] != word[right]: return False left += 1 right -= 1 return True def main(): N = int(input()) S = input() dp = {"": 1} for s in S: new_dp = {} if s == "?": target = -1 else: target = ord(s) - ord("a") for key, value in dp.items(): for x in range(26): if target == -1 or target == x: new_key = key + chr(x + ord("a")) if len(new_key) >= 2 and is_palindrome(new_key): continue if len(new_key) > 2: new_key = new_key[-2:] if len(new_key) == 2 and is_palindrome(new_key): continue if new_key not in new_dp: new_dp[new_key] = 0 new_dp[new_key] += value new_dp[new_key] %= MOD dp = new_dp answer = 0 for value in dp.values(): answer += value answer %= MOD print(answer) if __name__ == "__main__": main()