#include <bits/stdc++.h>
using namespace std;
struct FT {
  vector<int> f;
  FT(int n) { f.resize(n + 1, 0); }
  int sum(int r) {
    int res = 0;
    for (; r >= 0; r = (r & (r + 1)) - 1) {
      res += f[r];
    }
    return res;
  }
  int sum(int l, int r) { return sum(r) - sum(l - 1); }
  void upd(int i, int x) {
    for (; i < (int)f.size(); i = (i | (i + 1))) f[i] += x;
  }
};
vector<bool> lucky(1e4 + 7);
void dfs(int luck) {
  if (luck > 7777) return;
  lucky[luck] = true;
  dfs(luck * 10 + 4);
  dfs(luck * 10 + 7);
}
int a[1000000 + 7];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  dfs(0);
  FT fen(n + 1);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    if (lucky[a[i]]) fen.upd(i, +1);
  }
  for (int i = 0; i < m; i++) {
    char type[8];
    scanf("%s", type);
    if (type[0] == 'a') {
      int l, r, d;
      scanf("%d%d%d", &l, &r, &d);
      l--, r--;
      for (int j = l; j <= r; j++) {
        if (lucky[a[j]]) {
          fen.upd(j, -1);
        }
        a[j] += d;
        if (lucky[a[j]]) {
          fen.upd(j, +1);
        }
      }
    } else {
      int l, r;
      scanf("%d%d", &l, &r);
      l--, r--;
      cout << fen.sum(l, r) << '\n';
    }
  }
}
