#include <bits/stdc++.h>
using namespace std;
char str[2005], s[2005], t[2005];
int can[2][2005], sl, len[2], np;
long long x[2005 * 2005];
int main() {
  int i, j;
  while (scanf("%s", str) != EOF) {
    scanf("%s%s", s, t);
    sl = strlen(str);
    len[0] = strlen(s);
    len[1] = strlen(t);
    memset(can, 0, sizeof(can));
    for (i = 0; i + len[0] - 1 < sl; i++) {
      for (j = 0; j < len[0]; j++) {
        if (str[i + j] != s[j]) break;
      }
      if (j == len[0]) can[0][i] = 1;
    }
    for (i = 0; i + len[1] - 1 < sl; i++) {
      for (j = 0; j < len[1]; j++) {
        if (str[i + j] != t[j]) break;
      }
      if (j == len[1]) can[1][i + len[1] - 1] = 1;
    }
    for (i = 0, np = 0; i < sl; i++) {
      if (can[0][i]) {
        long long hashVal = 0;
        for (j = i; j < sl; j++) {
          hashVal = hashVal * 107 + (str[j] - 'a' + 1);
          if (i + len[0] - 1 <= j && can[1][j] && j - len[1] + 1 >= i)
            x[++np] = hashVal;
        }
      }
    }
    sort(x + 1, x + 1 + np);
    int ans = 0;
    for (i = 1; i <= np; i++) {
      if (i == 1 || x[i] != x[i - 1]) ans++;
    }
    printf("%d\n", ans);
  }
  return 0;
}
