#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define sp ' '
#define assert(x,a) if(x){cout << a << endl;return;}
#define sortv(x)sort(x.begin(),x.end())
#define revev(x)reverse(x.begin(),x.end())
inline void fast(){
std::ios_base::sync_with_stdio(0);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
}
vector<vector<int>>graph;
vector<bool>vis(100001,false);
bool sortbysec(const pair<int,int> &a,
const pair<int,int> &b)
{
return (a.second < b.second);
}
inline void answer(int c){assert(c==0,"NO")cout << "YES" << endl;}
void solve()
{
int n;cin >> n;
string s;cin >> s;
char first = s[0];
char last = s.back();
if(s.length() == 1)
cout << 0;
else
{
vector<int>index;
vector<int>index2;
for(int i = 0;i < s.length();i++)
{
if(s[i] == first)
index.push_back(i);
else if(s[i] == last)
index2.push_back(i);
}
if(first ==last )
cout << n-1 << endl;
else
{
if(index.back() > (n - 1)-index2[0])
{
int i = 0;
while(index2[i] < index.back())
{
i++;
}
cout << n - s.substr(index.back(),index2[i] + 1).length() + 1;
}
else
{
int i = 0;
bool flag = false;
while(index[i] < index.back())
{
flag = true;
i++;
}
if(flag)
i--;
cout << n - s.substr(index[i],index2[0] + 1).length() + 1;
}
}
}
}
int main()
{
fast();
ll t{ 1 };//cin >> t;
// cin.ignore();
while (t--)
{
solve();
}
}
Copy