Problem:
Score : 300 points

Problem Statement

There are N stones arranged in a row. Every stone is painted white or black.
A string S represents the color of the stones. The i-th stone from the left is white if the i-th character of S is ., and the stone is black if the character is #.

Takahashi wants to change the colors of some stones to black or white so that there will be no white stone immediately to the right of a black stone.
Find the minimum number of stones that needs to be recolored.

Constraints

1 \leq N \leq 2\times 10^5

S is a string of length N consisting of . and #.

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the minimum number of stones that needs to be recolored.

Sample Input 1

3
#.#

Sample Output 1

1

It is enough to change the color of the first stone to white.

Sample Input 2

5
#.##.

Sample Output 2

2

Sample Input 3

9
.........

Sample Output 3

0

Solution in Ruby (2.3.3) (judge verdict: Time Limit Exceeded)

N = gets.chomp.to_i
S = gets.chomp

w = 0
b = 0
bstart = -1
bend = -1

for x in 0...N
  if S[x] == "."
    w += 1
    bend = -1
  else
    if bstart == -1
      bstart = x
    end
    if bend == -1
      bend = x
    end
    b += 1
  end
end

if bend == -1
  bend = N
end

if w == 0 || b == 0
  puts 0
  exit
end

w2 = w - bstart
#b2 = b - (N-bend)
#answer = [w2,b2].min
answer = w2
a = w2

for x in bstart ... bend
  if S[x] = "#"
    a += 1
  else
    a -= 1
    answer = [a,answer].min
  end
end

puts answer