#include // #include using namespace std; // using namespace atcoder; const long long mod = 1e9 + 7; // const long long mod = 998244353; const double PI = acos(-1); using ll = long long; using PII = pair; using PLL = pair; #define REP(i,n) for(int i=0, i##_len=(n); i(b);i--) #define rep(i,a,b) for(int i=(a);i<(b);i++) // begin() end() #define all(x) (x).begin(),(x).end() //出力系 #define print(x) cout << x << endl #define prints(x) cout << fixed << setprecision(12) << x << endl #define printc(x) cout << setw(6) << setfill('0') << x << endl; #define yes cout << "Yes" << endl #define YES cout << "YES" << endl #define no cout << "No" << endl #define NO cout << "NO" << endl //最大公約数 ll gcd(ll x, ll y) { return y ? gcd(y,x%y) : x;} // 最小公倍数 unsigned lcm(unsigned a, unsigned b){ return a / gcd(a, b) * b; } const int INF = 1000000000; const double DINF = 1LL<<60; const long long LINF = 1LL<<60; const int MAX = 510000; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } // Nは問題によって変更すること // vectorind(N); // REP(i, N) ind[i]= i; //sort(all(ind), [&](int i, int j) {return x[i] < x[j];}); ll dy[4] = {0, 1, 0, -1}, dx[4] = {1, 0, -1, 0}; // ll dy[8] = {0, 1, 1, 1, 0, -1, -1, -1}, dx[8] = {1, 1, 0, -1, -1, -1, 0, 1}; vector>G; int main() { int N; cin >> N; string S; cin >> S; ll ans = 0; ll cnt = 0; rrep(i, N - 1, -1){ if(S[i] != '#'){ cnt = max(0LL, cnt - 1); continue; } chmax(ans, (N - i) + cnt); cnt++; } cout << ans << endl; return 0; }