#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
char s[N];
int n, m, a[N], bit[N], lucky[N];
void pre(int x) {
  if (x > N) return;
  lucky[x] = 1;
  pre(10 * x + 4);
  pre(10 * x + 7);
}
void add(int x, int val) {
  while (x < N) {
    bit[x] += val;
    x += (x & -x);
  }
}
int query(int x) {
  int ret = 0;
  while (x > 0) {
    ret += bit[x];
    x -= (x & -x);
  }
  return ret;
}
int main() {
  pre(0);
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    if (lucky[a[i]]) add(i, 1);
  }
  while (m--) {
    scanf("%s", s);
    if (s[0] == 'a') {
      int x, y, d;
      scanf("%d%d%d", &x, &y, &d);
      for (int i = x; i <= y; i++)
        if (lucky[a[i]]) add(i, -1);
      for (int i = x; i <= y; i++) {
        a[i] += d;
        if (lucky[a[i]]) add(i, 1);
      }
    } else {
      int x, y;
      scanf("%d%d", &x, &y);
      printf("%d\n", query(y) - query(x - 1));
    }
  }
  return 0;
}
