#include<iostream>
using namespace std;
#include <chrono>
using namespace std::chrono;
#include<stack>
#include<queue>
#include<set>
#include<vector>
#include<algorithm>
#include<string>
#include <functional>
#include<map>
#include<iomanip>
#include<cmath>
#include<list>
#define fst ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
typedef long long ll;
typedef unsigned long long ull;
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define pii pair<int,int>
#define vll vector<ll>
#define fin(i,v) for(ll i=0;i<v.size();i++)
#define go(x,y) for(int i=x;i<=y;i++)
#define MOD 1e9+7
#define out(x) cout << x << endl
#define mii map<int,int>
#define mid map<int,double
#define mm(arr) memset(arr, 0, sizeof(arr))
#define two2n(n) (1<<n)
constexpr auto PI = 3.14159265358979323846;;
bool ispow(unsigned long long x)
{
return (x != 0) && ((x & (x - 1)) == 0);
}
bool how(pair<int, int>& a, pair<int, int>& b)
{
return ((a.second > b.second));//|| (a.second == b.second && a.first < b.first));
}
/*
auto start = high_resolution_clock::now();
auto stop = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(stop - start);
cout << "time needed is : " << fixed << setprecision(8) << duration.count() << " microseconds" << endl;
*/
bool isprime(string s,int mx,int x)
{
for (int i = 2; i <= x; i++)
{
if (x % i == 0)
{
if (i >= mx || x / i >= mx)
{
int cur = 0;
bool ok = true;
for (int j = 0; j < s.length(); j++)
{
cur += (s[j] - 48);
if (cur == x / i)
cur = 0;
}
if(cur==0)
return false;
}
}
}
return true;
}
bool prime(int n)
{
if (n <= 1)
return false;
for (int i = 2; i < n; i++)
if (n % i == 0)
return false;
return true;
}
int main()
{
/*
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
*/
fst;
int n;
cin >> n;
string s;
cin >> s;
char f = s[0], l = s[n - 1];
int dist = n;
bool same = false;
if (f == l)
same = true;
if (same)
{
cout << n - 1;
}
else
{
for (int i = 0; i < n ; )
{
int j = i + 1;
while (j < n && s[j] == f)
{
j++;
}
if(j<n)
dist = min(dist, (j - i)+1);
i = j;
}
cout << n - dist;
}
return 0;
}
Copy