using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace Program
{
    interface Output
    {
        void Write(object str);
        void WriteLine(object str);
    }

    interface Input
    {
        int NextInt();
        string NextString();
    }

    class Console_ : Input, Output
    {
        Queue<string> param = new Queue<string>();
        int Input.NextInt()
        {
            if (param.Count == 0)
            {
                foreach (var item in Console.ReadLine().Split(' '))
                {
                    param.Enqueue(item);
                }
            }
            return int.Parse(param.Dequeue());
        }
        string Input.NextString()
        {
            if (param.Count == 0)
            {
                foreach (var item in Console.ReadLine().Split(' '))
                {
                    param.Enqueue(item);
                }
            }
            return param.Dequeue();
        }
        void Output.Write(object str)
        {
            System.Console.Write(str.ToString());
        }
        void Output.WriteLine(object str)
        {
            System.Console.WriteLine(str.ToString());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            new Solver(new Console_(), new Console_()).Run();
        }
    }

    class Debug_ : Input
    {
        int i = 0;
        int Input.NextInt()
        {
            return (int)data[i++];
        }
        string Input.NextString()
        {
            return (string)data[i++];
        }
        object[] data =
        {
            15,
            "#.#..##.#..#.###"
        };
    }

    class Solver
    {
        Input input;
        Output output;
        public Solver(Input input, Output output)
        {
            this.input = input;
            this.output = output;
        }

        public void Run()
        {
            var N = input.NextInt();
            var S = input.NextString().Select(e => e == '.' ? false : true).ToArray();
            var aryBlack = new int[S.Length];
            var aryWhite = new int[S.Length];

            bool not = false;
            bool not2 = true;
            bool not3 = false;
            bool not4 = true;
            for (int i = 0; i < S.Length; ++i)
            {
                if (not2 & S[i])
                {
                    not3 = true;
                }
                if (not3 & !S[i])
                {
                    not4 = false;
                }
                var whiteIdx = S.Length - i - 1;
                if (i == 0)
                {
                    aryBlack[i] = S[i] ? 1 : 0;
                    aryWhite[whiteIdx] = S[whiteIdx] ? 0 : 1;
                }
                else
                {
                    not = not | (S[i] ^ S[i - 1]);
                    aryBlack[i] = aryBlack[i - 1] + (S[i] ? 1 : 0);
                    aryWhite[whiteIdx] = aryWhite[whiteIdx + 1] + (S[whiteIdx] ? 0 : 1);
                }
            }
            if (!not || not4)
            {
                output.WriteLine(0);
                return;
            }
            int sum = 0xfffffff;
            for (int i = 0; i <= S.Length; ++i)
            {
                var tmp = 0;
                if (i == 0)
                {
                    tmp = aryWhite[i];
                }
                else if (i == S.Length)
                {
                    tmp = aryBlack[i - 1];
                }
                else
                {
                    tmp = aryBlack[i - 1] + aryWhite[i];
                }
                sum = Math.Min(tmp, sum);
            }

            output.WriteLine(sum);
        }

    }
}


Measured memory_bytes: 15072