#include <bits/stdc++.h>
using namespace std;
long long exp(long long x, long long y) {
  x %= 1000000007;
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % 1000000007;
    x = x * x % 1000000007;
    y >>= 1;
  }
  return res;
}
long long fact(long long n) {
  long long res = 1;
  for (long long i = 2; i <= n; ++i) (res *= i) %= 1000000007;
  return res;
}
bool isprime(int n) {
  for (int i = 2; i * i <= n; ++i)
    if (n % i == 0) return 0;
  return 1;
}
int main() {
  ios::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  string s;
  cin >> s;
  set<pair<int, int>> st;
  int ans = 0;
  int i = 0, j = 0;
  while (j < n) {
    if (s[j] != '.') {
      ++j;
      continue;
    }
    if (s[j] == '.') i = j;
    while (j < n && s[j] == '.') ++j;
    st.insert({i, j - 1});
    ans += (j - i - 1);
  }
  const int inf = int(4e5);
  while (m--) {
    int x;
    char ch;
    cin >> x >> ch;
    --x;
    if ((s[x] != '.' && ch != '.') || (s[x] == '.' && ch == '.')) {
      cout << ans << '\n';
      continue;
    }
    if (s[x] != '.' && ch == '.') {
      s[x] = ch;
      if (st.empty()) {
        cout << ans << '\n';
        st.insert({x, x});
        continue;
      }
      auto it1 = st.upper_bound({x, 1000000007}),
           it2 = st.upper_bound({x, 1000000007});
      --it1;
      pair<int, int> pos1 = {inf, inf}, pos2 = {-inf, -inf};
      if (it2 != st.end()) pos2 = {it2->first, it2->second};
      if (it2 != st.begin()) pos1 = {it1->first, it1->second};
      if (pos1.first != inf) st.erase(it1);
      if (pos2.first != -inf) st.erase(it2);
      if (pos2.first - pos1.second == 2) {
        ans -= (pos1.second - pos1.first);
        ans -= (pos2.second - pos2.first);
        ans += (pos2.second - pos1.first);
        st.insert({pos1.first, pos2.second});
        cout << ans << '\n';
        continue;
      }
      if (x - pos1.second == 1) {
        ans += 1;
        st.insert({pos1.first, x});
        if (pos2.first != -inf) st.insert(pos2);
      } else if (pos2.first - x == 1) {
        ans += 1;
        st.insert({x, pos2.second});
        if (pos1.first != inf) st.insert(pos1);
      } else {
        if (pos1.first != inf) st.insert(pos1);
        if (pos2.first != -inf) st.insert(pos2);
        st.insert({x, x});
      }
      cout << ans << '\n';
      continue;
    }
    if (s[x] == '.' && ch != '.') {
      s[x] = ch;
      auto it = st.upper_bound({x, 1000000007});
      --it;
      int len = it->second - it->first + 1;
      ans -= (len - 1);
      pair<int, int> pos1 = {it->first, x - 1};
      pair<int, int> pos2 = {x + 1, it->second};
      st.erase(it);
      if (pos1.first <= pos1.second) st.insert(pos1);
      if (pos2.first <= pos2.second) st.insert(pos2);
      ans += max(0, pos1.second - pos1.first);
      ans += max(0, pos2.second - pos2.first);
      cout << ans << '\n';
    }
  }
  return 0;
}
