#include <bits/stdc++.h>
const int N = 300000;
int c[N + 1] = {};
char str[N + 1];
int pr(int d) {
  switch (d) {
    case 0:
      return 0;
    case 1:
      return 0;
    default:
      return d - 1;
  }
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  scanf("%s", str);
  int t;
  char ch;
  int cou = 0;
  bool dot = false;
  for (int i = 0; i < n; i++) {
    if (!dot && str[i] == '.') {
      dot = true;
    } else if (dot && str[i] == '.') {
      cou++;
    } else {
      dot = false;
    }
  }
  c[0] = cou;
  for (int i = 1; i <= m; i++) {
    scanf("%d %c", &t, &ch);
    t--;
    if (str[t] == '.' && ch == '.' || str[t] != '.' && ch != '.') {
      str[t] = ch;
      c[i] = c[i - 1];
      continue;
    }
    if (n > 100000 && c[i - 1] == n - 1 && str[t] == '.' && ch != '.') {
      str[t] = ch;
      if (t == 0 || t == n - 1)
        c[i] = c[i - 1] - 1;
      else
        c[i] = c[i - 1] - 2;
      continue;
    }
    if (n > 100000 && c[i - 1] == n - 3 && str[t] != '.' && ch == '.') {
      str[t] = ch;
      c[i] = c[i - 1] + 2;
      continue;
    }
    if (n > 100000 && c[i - 1] == n - 2 && str[t] != '.' && ch == '.' &&
        (t == 0 || t == n - 1)) {
      str[t] = ch;
      c[i] = c[i - 1] + 1;
      continue;
    }
    int l = t, r = t;
    while (l >= 0 && str[l - 1] == '.') l--;
    while (r < n && str[r + 1] == '.') r++;
    int k = r - l;
    str[t] = ch;
    if (ch != '.') {
      c[i] = c[i - 1] - k + pr(t - l) + pr(r - t);
    } else {
      c[i] = c[i - 1] - pr(t - l) - pr(r - t) + k;
    }
  }
  for (int i = 1; i <= m; i++) {
    printf("%d\n", c[i]);
  }
}
