#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7;
const int N = 1e6 + 5;
const int M = 1e3 + 5;
const int K = 55;
char s[N], t[N];
int n, d, ans, cnt, fa[N], en[N], ch[N][10];
void insert() {
  for (int i = 0; i + d / 2 <= n; i++) {
    int rt = 0;
    for (int j = i; j < i + d / 2; j++) {
      if (!ch[rt][(int)s[j]]) ch[rt][(int)s[j]] = ++cnt;
      rt = ch[rt][(int)s[j]];
    }
    en[rt] = 1;
  }
}
queue<int> que;
void fail() {
  for (int i = 0; i < 10; i++)
    if (ch[0][i]) que.push(ch[0][i]);
  while (!que.empty()) {
    int x = que.front();
    que.pop();
    for (int i = 0; i < 10; i++)
      if (ch[x][i]) {
        int f = fa[x];
        que.push(ch[x][i]);
        while (f && !ch[f][i]) f = fa[f];
        fa[ch[x][i]] = ch[f][i];
      } else
        ch[x][i] = ch[fa[x]][i];
  }
}
int f[N][2][2], g[N][2][2];
inline void add(int &x, int y) { x += y, x -= x >= P ? P : 0; }
int calc() {
  memset(g, 0, sizeof(g)), g[0][1][0] = 1;
  for (register int i = 0; i < d; i++) {
    memset(f, 0, sizeof(f));
    for (register int j = 0; j <= cnt; j++) {
      for (register int k = i ? 0 : 1; k < 10; k++) {
        if (!en[ch[j][k]])
          add(f[ch[j][k]][0][0], g[j][0][0]);
        else
          add(f[ch[j][k]][0][1], g[j][0][0]);
        add(f[ch[j][k]][0][1], g[j][0][1]);
      }
      int tp = t[i];
      for (register int k = i ? 0 : 1; k < tp; k++) {
        if (!en[ch[j][k]])
          add(f[ch[j][k]][0][0], g[j][1][0]);
        else
          add(f[ch[j][k]][0][1], g[j][1][0]);
        add(f[ch[j][k]][0][1], g[j][1][1]);
      }
      if (!en[ch[j][tp]])
        add(f[ch[j][tp]][1][0], g[j][1][0]);
      else
        add(f[ch[j][tp]][1][1], g[j][1][0]);
      add(f[ch[j][tp]][1][1], g[j][1][1]);
    }
    swap(f, g);
  }
  int ans = 0;
  for (register int i = 0; i <= cnt; i++)
    add(ans, g[i][1][1]), add(ans, g[i][0][1]);
  return ans;
}
int main() {
  scanf("%s%s", s, t), n = strlen(s), d = strlen(t);
  for (int i = 0; i < n; i++) s[i] ^= 48;
  for (int i = 0; i < d; i++) t[i] ^= 48;
  insert(), fail();
  int tmp = d;
  while (!t[d - 1]) t[--d] = 9;
  if (d != 1 || t[d - 1] != 1) t[d - 1]--, d = tmp, ans = P - calc();
  scanf("%s", t), d = strlen(t);
  for (int i = 0; i < d; i++) t[i] ^= 48;
  ans = (ans + calc()) % P;
  printf("%d\n", ans);
  return 0;
}
