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 Lua (5.3.2) (judge verdict: Wrong Answer)

local function str2tbl(s)
    local t = {string.byte(s, 1, #s)}
    for i=1, #t do
        t[i] = string.char(t[i])
    end
    return t
end

local function str2numtbl(s, offset)
    local t = {string.byte(s, 1, #s)}
    if offset then
        for i=1, #t do
            t[i] = t[i] - offset
        end
    end
    return t
end

--local function each_char2(s)
--    return ipairs(str2tbl(s))
--end

local function each_char(s)
    local f = function(_, i)
        i = i + 1
        if i <= #s then
            return i, string.sub(s, i, i)
        end
    end
    return f, nil, 0
end

function string.at(s, i)
    return string.sub(s, i, i)
end

--
local N,_,S = io.read("n", "l", "l")
local B = '#'
local W = '.'
S = str2tbl(S)
local ans = 0
local flag = false
for i=1,N do
    local c = S[i]
    if not flag then
        if c == B then
            flag = true
        end
    else
        if c == W then
            ans = ans + 1
        end
    end
end
print(ans)