#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define all(v) v.begin(),v.end() typedef long long ll; #define int ll using vi = vector; using vs = vector; using P = pair; template bool chmax(T &a, const T b) {if (a < b) {a = b; return true;} else return false; } template bool chmin(T &a, const T b) {if (a > b) {a = b; return true;} else return false; } const int INF = 1e18; const int mod = 998244353; int dp[200200][2][2];//dp[i][j][k]:=i桁まで見てaを(使ってない0)(使った1)、sより小さいことが確定(しない0)(する1) signed main() { cin.tie(0); ios_base::sync_with_stdio(false); cout << fixed << setprecision(20); int n; string S; cin>>n>>S; dp[0][0][0]=1; rep(i,n){ int ni = S[i]-'a';//Sの上からi桁目 rep(j,2)rep(k,2)rep(x,26){ int j2 = j,k2 = k;// 遷移後の状態を表す変数 j2, k2 を,遷移前の状態で初期化 if(x==0)j2++; // X の上から i 桁目 x が a なら j2 を更新 if(j2>1)continue; // aの数が 1 より多いなら無視 if(!k&&(x>ni))continue;//Sより大きいなら無視 if(x