#include <bits/stdc++.h>
using namespace std;
template <class T>
T ceil(T a, T b) {
  return (a + b - 1) / b;
}
template <class T>
T round(T a, T b) {
  return (a + b / 2) / b;
}
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <class T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
bool amax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool amin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int N;
  string S;
  cin >> N >> S;
  int fst = -1, lst = -1;
  for (int i = (int)(0); i < (int)(N - 1); i += (int)(1)) {
    if (S[i] == '#' && S[i + 1] == '.') {
      if (fst < 0) {
        fst = i;
      }
      lst = i;
    }
  }
  if (fst < 0) {
    cout << 0 << endl;
    return 0;
  }
  vector<int> w(N + 1, 0), b(N + 1, 0);
  for (int i = (int)(0); i < (int)(N); i += (int)(1)) {
    w[i + 1] = w[i];
    b[i + 1] = b[i];
    if (S[i] == '.') {
      w[i + 1]++;
    } else {
      b[i + 1]++;
    }
  }
  int res = 1e6;
  for (int i = (int)(0); i < (int)(N - 1); i += (int)(1)) {
    if (S[i] == '#' && S[i + 1] == '.') {
      if (i == fst) {
        amin(res, w[N] - w[i + 1]);
      } else if (i == lst) {
        amin(res, b[i + 1]);
      } else {
        amin(res, b[i + 1] + w[N] - w[i + 1]);
      }
    }
  }
  cout << res << endl;
  return 0;
}
