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 JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

function MainC(input) {
	input = input.split("\n");
	var n = input[0];
  var s = input[1];
  var result = 0;
  
  //一番最初の#と最後の.を調べる
  var firstBlack = 0;
  var lastWhite = 0;
  
  var i = 0;
  while(i < n){
    if(s[i] == "#"){
      firstBlack = i;
      break;
    }else{
      i++;
      firstblack = i;
    }
  }
  i = 0;
  while(i < n){
    if(s[n - i] == "."){
      lastWhite = i;
      break;
    }else{
      i++;
      lastWhite = i
    }
  }
  
  var tmpColor = 1;
  var colorArr = [".","#"];
  var arr = [[],[]];
  if(firstBlack + lastWhite != n){
    var stones = s.slice(firstBlack,n - lastWhite + 1);
    n = n - firstBlack - lastWhite;
    var c = 0;
    for(var i = 0; i < n; i++){
      if(stones[i] != colorArr[tmpColor]){
        tmpColor = (tmpColor + 1) % 2;
        arr[tmpColor].push(c);
      }else{
        c++;
      }
    }
    var len = arr[0].length;
    for(var i = 0; i < len; i++){
      var l = arr[1].length;
      if(arr[0][0] < arr[1][l-1]){
        result += arr[0][0];
        arr[0].shift();
      }else{
        result += arr[1][l-1];
        arr[1].pop();
      }
    }
  }else{
    result = 0;
  }
  
	console.log('%d',result);
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
MainC(require("fs").readFileSync("/dev/stdin", "utf8"));