#include <stdio.h>
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<complex>
#include<vector>

using namespace std;

int nx[]={0,1,0,-1};
int ny[]={0,1,0,-1};
//*****************************************


int main(void){

    int a,b,c;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
#include <iostream>
#include <string>

//最終形は
//あるところから右は全て黒、左は白という形にしかならない
//問題はどこを境界にするか
//したがって、N個の境界(1個めの左から)について、その左側の黒と右側の黒の個数の合計を調べる=その境界を基準としたとき色変えする個数
//全ての白の個数をあらかじめもっておけば、for文1回で各境界でのchange回数がわかる。あとは保存するなり毎回比較するなりすればOK
using namespace std;
int main(){
  int n; cin >> n;
  string s; cin >> s;
  
  int now_white = 0;
  for (int i=0; i<n; i++) if (s.at(i) == '.') now_white++;
  int now_white_right=now_white, now_black_left=0, min_change=now_white;
  for (int i=0; i<n; i++) {
    if (s.at(i) == '.') now_white_right--;
    else now_black_left++;
    min_change = min(now_white_right+now_black_left, min_change);
  }
  cout << min_change << endl;
}

    if((a>c && b<c) || (a<c && b>c))
    {

        cout << "Yes"<<endl;
    }
    else
    {
        cout << "No"<<endl;
    }


    return 0;
}



