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 PHP7 (7.0.15) (judge verdict: Wrong Answer)

<?php
$n = (int)trim(fgets(STDIN));
$s = trim(fgets(STDIN));

$stack = new SimpleStack();
for ($i=0; $i < $n; $i++) { 
	$tmp = $s[$i];
	if ($tmp === '#') {
		$stack->push('B');
	}else{
		if ($stack->isEmpty()) {
			$stack->push('W');
		}else{
			$prev = $stack->pop();
			if ($prev === 'W') {
				$stack->push('W');
				$stack->push('W');
			}else{
				$prev2 = $stack->pop();
				if(empty($prev2)){
					$stack->push('W');
				}else{
					$stack->push($prev2);
					$stack->push($prev2);
				}
			}
		}
	}
}
$res = [];
while (!$stack->isEmpty()) {
	$res[] = $stack->pop();
}
echo $n - count($res);


/**
 * 
 */
class SimpleStack
{
	private $idx = 0;
	private $data = [];

	function push($d){
		$this->idx += 1;
		$this->data[$this->idx] = $d;
	}
	function pop(){
		$d = null;
		if (!$this->isEmpty()) {
			$d = $this->data[$this->idx];
			$this->idx -= 1;
		}
		return $d;
	}
	function isEmpty(){
		return $this->idx === 0;
	}
}