#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 돌다리 건너기
# https://www.acmicpc.net/problem/2602

key = input()
devil = input()
angel = input()

# key = 'RGS'
# devil = 'RINGSR'
# angel = 'GRGGNS'

# 입력한 키 별로 다리를 몇 번 밟아야 하는지 확인

# 먼저 배열 초기화
# 건너야할 다리 수 * 문자열 수
kd = [[0]*len(devil) for i in range(len(key))]
ka = [[0]*len(angel) for j in range(len(key))]
# [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
# [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]

# 먼저 첫번째 문자열인 경우 앞서 밟은 다리가 없으므로 초기값으로 셋팅한다.
# 만약 R을 밟아야 할 경우 :
# devil 에서 첫번째 문자와 일치하므로 1
# 두번째 문자열은 일치하지 않으므로 이전에 밟은 경우의 수를 유지
# 마지막 문자열에서 일치하므로 이전에 밟은 경우의 수 + 1
for j in range(len(devil)):
    kd[0][j] = kd[0][j-1]
    if devil[j] == key[0]:
        kd[0][j] += 1
    ka[0][j] = ka[0][j-1]
    if angel[j] == key[0]:
        ka[0][j] += 1
# [[1, 1, 1, 1, 1, 2], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
# [[0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]

# 다음 문자열부터는 이전 값과 합하면서 전진 확인
# 만약 G를 밟아야 할 경우:
# G 앞에는 무조건 R 이 필요하므로 그 이후부터 전진
# devil 에서 4번째 문자열 부터 일치하므로 이전에 angel 다리에서 3번째 밟은 경우의 수와 더한다.
# 그다음부터는 일치하는 문자가 없으므로 이전 값으로 셋팅
# angel 에서 3번째 문자열 부터 일치하므로 이전에 angel 다시에서 2번째 밟은 경우의 수와 더한다.
# 그다음 문자 또한 이전에 angel 다시에서 3번째 밟은 경우의 수와 더한다.
# [[1, 1, 1, 1, 1, 2], [0, 0, 0, 1, 1, 1], [0, 0, 0, 0, 0, 0]]
# [[0, 1, 1, 1, 1, 1], [0, 0, 1, 2, 2, 2], [0, 0, 0, 0, 0, 0]]

# 만약 S를 밟아야 할 경우
# S 앞에는 무조건 RG가 필요하므로 그 이후부터 전진
# devil 에서 5번째 문자열 부터 일치하므로 이전에 angel 다리에서 밟은 4번째 경우의 수와 더한다.
# [[1, 1, 1, 1, 1, 2], [0, 0, 0, 1, 1, 1], [0, 0, 0, 0, 2, 2]]
# [[0, 1, 1, 1, 1, 1], [0, 0, 1, 2, 2, 2], [0, 0, 0, 0, 0, 1]]
for i in range(1, len(key)):
    for j in range(i, len(devil)):
        kd[i][j] = kd[i][j-1]
        if devil[j] == key[i]:
            kd[i][j]+= ka[i-1][j-1]
        ka[i][j] = ka[i][j-1]
        if angel[j] == key[i]:
            ka[i][j]+= kd[i-1][j-1]
print(kd[-1][-1]+ka[-1][-1])
