#include <bits/stdc++.h>
using namespace std;
int tree[400000];
int MaxVal = 400000;
int read(int idx) {
  int sum = 0;
  while (idx > 0) {
    sum += tree[idx];
    idx -= (idx & -idx);
  }
  return sum;
}
void update(int idx, int val) {
  while (idx <= MaxVal) {
    tree[idx] += val;
    idx += (idx & -idx);
  }
}
int main(int argc, char** argv) {
  memset(tree, 0, sizeof(tree));
  int n, m;
  cin >> n >> m;
  string s;
  cin >> s;
  for (int i = 1; i < s.length(); i++) {
    if (s[i] == '.' && s[i - 1] == '.') {
      update(i + 1, 1);
    }
  }
  for (int i = 0; i < m; i++) {
    int d;
    char c;
    cin >> d >> c;
    if (c != '.') {
      if (s[d - 1] == '.') {
        if (d < s.length() && s[d] == '.') update(d + 1, -1);
        if (d > 1 && s[d - 2] == '.') update(d, -1);
      }
    } else {
      if (s[d - 1] != '.') {
        if (d < s.length() && s[d] == '.') update(d + 1, 1);
        if (d > 1 && s[d - 2] == '.') update(d, 1);
      }
    }
    s[d - 1] = c;
    cout << read(s.length()) << endl;
  }
  return 0;
}
