Problem: 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.

Examples

Input

3
#.#


Output

1


Input

3
.#


Output

1


Input

5
.##.


Output

2


Input

9
.........


Output

0

Solution (in JAVA):

Solution:
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String st = sc.next();

		char[] c = st.toCharArray();
		long[] x = new long[st.length()];
		int kosu = Renzoku(c, x);
		int moto, saki;
		moto = 0;
		saki = kosu - 1;
		if (c[0] == '.') {
			moto = 1;

		}
		if (c[n - 1] == '#') {
			saki--;
		}

		long min = 0;
		long ans = 0;

		for (int j = moto + 1; j <= saki; j = j + 2) {
			ans += x[j];

		}
		min = ans;
		for (int j = moto + 2; j <= saki+2; j = j + 2) {
			ans = ans - x[j - 1] + x[j - 2];
			if (ans < min) {
				min = ans;
			}
		}

		System.out.println(min);

	}

	public static int Renzoku(char c[], long x[]) {

		int mode = 0;
		int val = 0;

		for (int i = 0; i <= c.length - 2; i++) {
			if ((c[i] == c[i + 1]) && i != c.length - 2) {
				val++;
			} else {
				if ((c[i] == c[i + 1]) && i == c.length - 2) {
					val++;
				}
				val++;
				x[mode] = val;
				mode++;

				if ((c[i] != c[i + 1]) && i == c.length - 2) {
					x[mode] = 1;
					mode++;
				}

				val = 0;
			}

		}
		return mode;

	}
}