#include <bits/stdc++.h>   using namespace std;   template <class T>   void chmin(T &a, const T &b) {     if (a > b) a = b;   }   template <class T>   void chmax(T &a, const T &b) {     if (a < b) a = b;   }   template <class T>   using MaxHeap = priority_queue<T>;   template <class T>   using MinHeap = priority_queue<T, vector<T>, greater<T>>;   template <class T>   vector<T> vect(int len, T elem) {     return vector<T>(len, elem);   }   template <class T, class U>   ostream &operator<<(ostream &os, const pair<T, U> &p) {     os << p.first <<  ,  << p.second;     return os;   }   template <class T, class U>   istream &operator>>(istream &is, pair<T, U> &p) {     is >> p.first >> p.second;     return is;   }   template <class T>   ostream &operator<<(ostream &os, const vector<T> &vec) {     for (int i = 0; i < vec.size(); i++) {       os << vec[i];       if (i + 1 < vec.size()) os <<    ;     }     return os;   }   template <class T>   istream &operator>>(istream &is, vector<T> &vec) {     for (int i = 0; i < vec.size(); i++) is >> vec[i];     return is;   }   void fastio() {     cin.tie(0);     ios::sync_with_stdio(0);     cout << fixed << setprecision(20);   }   template <int MOD>   struct ModInt {     long long val;     ModInt() : val(0ll) {}     ModInt(const long long &v) : val(((v % MOD) + MOD) % MOD) {}     bool operator==(const ModInt &x) const { return val == x.val; }     bool operator!=(const ModInt &x) const { return !(*this == x); }     bool operator<(const ModInt &x) const { return val < x.val; }     bool operator>(const ModInt &x) const { return val > x.val; }     bool operator>=(const ModInt &x) const { return !(*this < x); }     bool operator<=(const ModInt &x) const { return !(*this > x); }     ModInt operator-() const { return ModInt(MOD - val); }     ModInt inv() const { return this->pow(MOD - 2); }     ModInt &operator+=(const ModInt &x) {       if ((val += x.val) >= MOD) val -= MOD;       return *this;     }     ModInt &operator-=(const ModInt &x) {       if ((val += MOD - x.val) >= MOD) val -= MOD;       return *this;     }     ModInt &operator*=(const ModInt &x) {       (val *= x.val) %= MOD;       return *this;     }     ModInt &operator/=(const ModInt &x) { return *this *= x.inv(); };     ModInt operator+(const ModInt &x) const { return ModInt(*this) += x; }     ModInt operator-(const ModInt &x) const { return ModInt(*this) -= x; }     ModInt operator*(const ModInt &x) const { return ModInt(*this) *= x; }     ModInt operator/(const ModInt &x) const { return ModInt(*this) /= x; }     friend istream &operator>>(istream &i, ModInt &x) {       long long v;       i >> v;       x = v;       return i;     }     friend ostream &operator<<(ostream &o, const ModInt &x) {       o << x.val;       return o;     }     ModInt pow(long long x) const {       auto res = ModInt(1ll);       auto b = *this;       while (x) {         if (x & 1) res *= b;         x >>= 1;         b *= b;       }       return res;     }   };   template <int MOD>   ModInt<MOD> pow(ModInt<MOD> a, long long x) {     ModInt<MOD> res = ModInt<MOD>(1ll);     while (x) {       if (x & 1) res *= a;       x >>= 1;       a *= a;     }     return res;   }   constexpr int MOD = 998244353;   using mint = ModInt<MOD>;   vector<mint> inv, fac, facinv;   mint nCr(int n, int r) {     assert(!(n < r));     assert(!(n < 0 || r < 0));     return fac[n] * facinv[r] * facinv[n - r];   }   void init(int SIZE) {     fac.resize(SIZE + 1);     inv.resize(SIZE + 1);     facinv.resize(SIZE + 1);     fac[0] = inv[1] = facinv[0] = mint(1ll);     for (int i = 1; i <= SIZE; i++) fac[i] = fac[i - 1] * mint(i);     for (int i = 2; i <= SIZE; i++)       inv[i] = mint(0ll) - mint(MOD / i) * inv[MOD % i];     for (int i = 1; i <= SIZE; i++) facinv[i] = facinv[i - 1] * inv[i];     return;   }   void solve() {     int n;     cin >> n;     string s;     cin >> s;     long long l = 0;     while (s[l] == s[0]) l++;     long long r = 0;     while (s[n - 1 - r] == s[n - 1]) r++;     if (s[0] != s[n - 1]) {       cout << (l + r + 1) % MOD <<   n ;     } else {       cout << ((l + 1) * (r + 1)) % MOD <<   n ;     }     return;   }   signed main() {     fastio();     solve();     return 0;   }