#include <bits/stdc++.h>
using namespace std;
string n, s, e;
long long temp = 0;
unordered_map<long long, bool> m;
bool ie[2002];
vector<int> is;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s >> e;
  for (int i = 0; i < n.size(); i++) {
    bool f = 1;
    for (int j = 0; j < s.size(); j++) {
      if (i + j >= n.size() || n[i + j] != s[j]) {
        f = 0;
        break;
      }
    }
    if (f) is.push_back(i);
    f = 1;
    for (int j = 0; j < e.size(); j++) {
      if (i + j >= n.size() || n[i + j] != e[j]) {
        f = 0;
        break;
      }
    }
    if (f) ie[i + e.size() - 1] = 1;
  }
  int ans = 0;
  for (int i = 0; i < is.size(); i++) {
    temp = n[is[i]];
    for (int j = is[i]; j < n.size(); j++) {
      if (is[i] != j) {
        temp *= 701;
        temp += n[j];
      }
      if (ie[j] && is[i] + s.size() - 1 <= j) {
        if (j - e.size() + 1 >= is[i]) {
          if (!m.count(temp)) {
            m[temp] = 1;
            ans++;
          }
        }
      }
    }
  }
  cout << ans;
  return 0;
}
