#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

typedef long long LL;

const int N = 200005;
const int INF = 0x7f7f7f7f;

struct SuffixArray {
	static const int N = ::N<<1;
	int sa[N], rk[N], ht[N], tmp[N<<1], len;
	struct Compare {
		int &len, *tmp;
		bool operator()(int x, int y) const {
			if(tmp[x] != tmp[y]) return tmp[x] < tmp[y];
			return tmp[x+len] < tmp[y+len];
		}
	};
	void build_array(const char* s, int n) {
		Compare cmp = {len, tmp};
		for(int i = 0; i <= n; ++i) rk[sa[i]=i]=s[i];
		for(len = 1; rk[sa[n]] != n; len <<= 1) {
			copy(rk, rk+n+1, tmp);
			sort(sa, sa+n+1, cmp);
			for(int i=rk[*sa]=0; i < n; ++i)
				rk[sa[i+1]]=rk[sa[i]]+cmp(sa[i],sa[i+1]);
		}
		for(int i=len=ht[*sa]=0; i<n; ++i) {
			if(len) --len;
			while(s[i+len]==s[sa[rk[i]-1]+len]) len++;
			ht[rk[i]]=len;
		}
	}
	void calc_lcp(int n, int m, int* lcp) {
		bool noa = true;
		int maxl = INF;
		for(int i = 1; i <= n; ++i) {
			if(sa[i] >= m) {
				int x = sa[i]-m;
				if(noa) {
					lcp[x] = 0;
				} else {
					maxl = min(maxl, ht[i]);
					lcp[x] = maxl;
				}
			} else if(sa[i] < m-1) {
				noa = false;
				maxl = INF;
			}
		}
		noa = true;
		maxl = INF;
		for(int i = n; i >= 1; --i) {
			if(sa[i] >= m && !noa) {
				int x = sa[i]-m;
				lcp[x] = max(lcp[x], maxl);
				maxl = min(maxl, ht[i]);
			} else if(sa[i] < m-1) {
				noa = false;
				maxl = ht[i];
			}
		}
	}
} SA;

void manacher(const char* s, int n, int* r) {
	for(int i=0, u=0, v=0; i < n+n-1; ++i) {
		int x = max(min((u-i)/2, r[v-i]), 0);
		int p = i/2-x, q = (i+1)/2+x;
		while(~p && q < n && s[p] == s[q]) --p, ++q, ++x;
		if(u < q<<1) u = q<<1, v = i<<1;
		r[i] = x;
	}
}

char a[N<<1], b[N];
int n, m, f[N<<1], s[N], lcp[N];
LL ans;

void gao() {
	SA.build_array(a, m+n+1);
	SA.calc_lcp(m+n+1, m+1, lcp);
	for(int i = 0; i<<1 < n; ++i) if(f[i]) {
		int minj = i ? ((n+1)>>1)+i : n>>1;
		int minl = min(n-1, minj)-i+1;
		if(lcp[i] >= minl)
			ans += s[minj]-s[i+lcp[i]];
	}
}

int main() {
	scanf("%s%s", a, b);
	m = strlen(a);
	n = strlen(b);
	manacher(b, n, f);
	for(int i = 0; i < n; ++i)
		f[i] = f[i<<1] == min(i+1, n-i);
	for(int i = n-1; i >= 0; --i)
		s[i] = s[i+1]+f[i];
	a[m] = '$';
	strcpy(a+m+1, b);
	gao();
	reverse(a, a+m);
	gao();
	if(n == 1) ans >>= 1;
	cout << ans << '\n';
}
