#![allow(non_snake_case, unused_imports)] use std::cmp::{min, max, Reverse}; use std::collections::{BinaryHeap, Bound, HashMap, HashSet, VecDeque}; use std::hash::Hash; use std::ops::RangeBounds; use ac_library::{Additive, Min, Segtree}; use proconio::{input, marker::Usize1, marker::Chars}; use itertools::Itertools; #[allow(unused_macros)] macro_rules! d { ( $( $x:expr ),* $(,)? ) => { eprintln!( concat!( $( stringify!($x), "={:?} " ),* ), $( $x ),* ); }; } #[allow(dead_code)] fn yn(b: bool) -> &'static str { if b { "Yes" } else { "No" } } const INF: i64 = 1 << 62; fn f(cs: &[char]) -> Vec { let mut res = vec![INF; cs.len()]; for (i, &c) in cs.iter().enumerate() { if c == '#' { res[i] = 0; } else if i > 0 { res[i] = res[i-1] + 1; } } res } fn main() { input! { _N: usize, S: Chars, } let t = S.iter().rev().copied().collect_vec(); let ls = f(&S); let rs = f(&t).iter().copied().rev().collect_vec(); let mut d = 0; let mut ans = 0; for (i, (&l, &r)) in ls.iter().zip(rs.iter()).enumerate() { let mi = l.min(r); if mi > d { d = mi; ans = i; } } println!("{}", ans+1); }