#include <bits/stdc++.h>
using namespace std;
const int inf = (int)1e9;
const long long mod = (long long)1e9 + 7;
const double pi = acos(-1.0);
const double eps = (double)1e-9;
const int dx[] = {0, 0, 1, 0, -1};
const int dy[] = {0, 1, 0, -1, 0};
const int N = 100500;
int n, q, s[N * 4][10];
long long a[N], sum[10], t[N * 4][10];
void build(int v, int l, int r) {
  if (l == r) {
    long long x = 1;
    while (a[r]) {
      long long c = a[r] % 10;
      t[v][c] += x;
      a[r] /= 10;
      x *= 10;
    }
    for (int i = 0; i < 10; i++) s[v][i] = i;
    return;
  }
  int mid = (l + r) >> 1;
  build(v + v, l, mid);
  build(v + v + 1, mid + 1, r);
  for (int i = 0; i < 10; i++) t[v][i] = t[v + v][i] + t[v + v + 1][i];
  for (int i = 0; i < 10; i++) s[v][i] = i;
}
inline void ch_val(int v, int vv) {
  memset(sum, 0, sizeof(sum));
  for (int i = 0; i < 10; i++) sum[s[v][i]] += t[vv][i];
  for (int i = 0; i < 10; i++) t[vv][i] = sum[i];
}
inline void push(int v) {
  ch_val(v, v + v);
  ch_val(v, v + v + 1);
  for (int i = 0; i < 10; i++) {
    s[v + v][i] = s[v][s[v + v][i]];
    s[v + v + 1][i] = s[v][s[v + v + 1][i]];
  }
  for (int i = 0; i < 10; i++) s[v][i] = i;
}
void upd(int v, int l, int r, int lx, int rx, int x, int y) {
  if (rx < l || r < lx) return;
  if (lx <= l && r <= rx) {
    t[v][y] += t[v][x];
    t[v][x] = 0;
    for (int i = 0; i < 10; i++)
      if (s[v][i] == x) s[v][i] = y;
    return;
  }
  push(v);
  int mid = (l + r) >> 1;
  upd(v + v, l, mid, lx, rx, x, y);
  upd(v + v + 1, mid + 1, r, lx, rx, x, y);
  for (int i = 0; i < 10; i++) t[v][i] = t[v + v][i] + t[v + v + 1][i];
}
long long get(int v, int l, int r, int lx, int rx) {
  if (rx < l || r < lx) return 0;
  if (lx <= l && r <= rx) {
    long long res = 0;
    for (int i = 0; i < 10; i++) res += i * t[v][i];
    return res;
  }
  push(v);
  int mid = (l + r) >> 1;
  return get(v + v, l, mid, lx, rx) + get(v + v + 1, mid + 1, r, lx, rx);
}
int main() {
  scanf("%d %d", &n, &q);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  build(1, 1, n);
  for (int i = 1; i <= q; i++) {
    int tp;
    scanf("%d", &tp);
    if (tp == 1) {
      int l, r, x, y;
      scanf("%d %d %d %d", &l, &r, &x, &y);
      if (x != y) upd(1, 1, n, l, r, x, y);
    } else {
      int l, r;
      scanf("%d %d", &l, &r);
      printf("%I64d\n", get(1, 1, n, l, r));
    }
  }
  return 0;
}
