#include /* #include #include namespace mp = boost::multiprecision; using bint = mp::cpp_int; */ #include #define rep(i,n) for (int i = 0; i < int(n); ++i) #define repp(i,n,m) for (int i = m; i < int(n); ++i) #define repb(i,n) for (int i = int(n)-1; i >= 0; --i) #define endl "\n" using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using P = pair; using PL = pair; using pdd = pair; using pil = pair; using pli = pair; using ppi = pair; using pip = pair; const int INF = 1001001007; const long long mod1 = 1000000007LL; const long long mod2 = 998244353LL; const ll inf = 2e18; const ld pi = 3.14159265358979323; const ld eps = 1e-7; const char _ = ' '; templatevoid o(T a); templateistream &operator>>(istream &is,vector &v){for(auto &e:v)is>>e;return is;} templateostream &operator<<(ostream &os,const vector &v){if(v.size()!=0){rep(i,v.size())os<istream &operator>>(istream &is,vector> &v){for(auto &e:v)is>>e;return is;} templateostream &operator<<(ostream &os,const vector> &v){if(v.size()!=0){for(auto &e:v)o(e);}return os;} templatebool range(T a,T b,T x){return (a<=x&&xbool rrange(T a,T b,T c,T d,T x,T y){return (range(a,c,x)&&range(b,d,y));} templatevoid rev(vector &v){reverse(v.begin(),v.end());} void revs(string &s) {reverse(s.begin(),s.end());} templatevoid sor(vector &v, int f=0){sort(v.begin(),v.end());if(f!=0) rev(v);} templatebool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;} templatebool chmax(T &a,const T &b){if(avoid eru(vector &v){sor(v);v.erase(unique(v.begin(),v.end()),v.end());} templateT cel(T a,T b){if(a%b==0)return a/b;return a/b +1;} void o(){cout<<"!?"<void o(T a){cout<void mout(T a){cout< void print(const T& a){ cout << a; } int out(){ putchar('\n'); return 0; } template int out(const T& t){ print(t); putchar('\n'); return 0; } template int out(const Head& head, const Tail&... tail){ print(head); putchar(' '); out(tail...); return 0; } void yes(){cout << "Yes" << endl;} void no (){cout << "No" << endl;} void yn (bool t){if(t)yes();else no();} templatevoid dame(bool t, T s){if(!t){cout << s << endl;exit(0);}} void fast_io(){cin.tie(0); ios::sync_with_stdio(0); cout<void o2(pair a){out(a.first,a.second);} vector dx = {0,1,0,-1,1,1,-1,-1}; vector dy = {1,0,-1,0,1,-1,-1,1}; const string ALP = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const string alp = "abcdefghijklmnopqrstuvwxyz"; const string NUM = "0123456789"; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} ll lcm(ll a,ll b){return a/gcd(a,b)*b;} ll mpow(ll x,ll n,ll m){if(n==0)return 1LL;x%=m;ll a=mpow(x,n/2,m);a=a*a%m;return (n&1)?a*x%m:a;} void solve(){ int n; cin >> n; string s; cin >> s; vector del = {'A','C','G','T'}; deque le, ri; vector a(n,0); int cnt = 0; rep(i,n) for (char c : del) if (c == s[i]) a[i]++, cnt++; int ans = 0; rep(i,cnt-1) le.push_back(a[i]); repp(i,n,cnt-1) ri.push_back(a[i]); while (cnt > 0){ int p = ri.front(); ri.pop_front(); ans++; if (p == 0) continue; cnt--; if (cnt > 0) ri.push_front(le.back()), le.pop_back(); } o(ans); } int main(){ fast_io(); int t = 1; // cin >> t; while (t--) solve(); }