#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-12;
const int inf = (int)1e9;
const int MAX_N = 2 * 1000 + 100;
string text, s, e;
int ss[MAX_N], ee[MAX_N];
int dp[MAX_N][MAX_N];
int mx[MAX_N];
bool is_sub(int idx, string &a) {
  for (int i = 0; i < ((int)a.size()); i++) {
    if (idx + i >= ((int)text.size()) || a[i] != text[idx + i]) return 0;
  }
  return 1;
}
int main() {
  cin >> text >> s >> e;
  for (int i = 0; i < ((int)text.size()); i++) {
    if (is_sub(i, s)) ss[i] = 1;
    if (is_sub(i, e)) ee[i + ((int)e.size()) - 1] = 1;
  }
  int n = ((int)text.size());
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      if (text[i] == text[j]) dp[i][j] = (i ? dp[i - 1][j - 1] : 0) + 1;
      mx[j] = max(mx[j], dp[i][j]);
    }
  }
  int ans = 0;
  for (int i = 0; i < n; i++) {
    for (int len = 1; i + len - 1 < n; len++) {
      if (ss[i] && ee[i + len - 1] && len > mx[i + len - 1])
        if (i + ((int)s.size()) - 1 <= i + len - 1 &&
            i + len - ((int)e.size()) >= i)
          ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
