#include<bits/stdc++.h>
using namespace std;
#define f(i , a , b) for(int i = a;i <= b;i++)
#define N (int) (5 * (1e6) + 5)
int lena , lenb , ans;
int p[N] , f[N] ,Pre[N] , Sum[N] , hr[N] ;
char A[N] , B[N];
void Kmp_Self(int j = 0) {
f (i , 2 , lenb) {
while(j && B[i] != B[j + 1]) j = p[j];
j += B[i] == B[j + 1];
p[i] = j;
}
}
void Kmp(int j = 0) {
f(i , 1 , lena) {
while(j && A[i] != B[j + 1]) j = p[j];
j += A[i] == B[j + 1];
if(j == lenb) {
f[i - lenb + 1] = 1;
j = p[j];
}
}
}
void qr(char *D , int &len) {
char c = getchar();
len = 0;
D[len++] = '~';
D[len++] = '|';
while(c < 'a' || c > 'z') c = getchar();
while(c >= 'a' && c <= 'z') D[len++] = c,D[len++] = '|',c = getchar();
len--;
}
int main() {
scanf("%d %d",&lena , &lenb);
qr(A,lena) , qr(B,lenb);
Kmp_Self();
Kmp();
int cn = 0;
f(i , 1 , lena) {
Sum[i] = Sum[i - 1] + f[i] * i ;
Pre[i] = Pre[i - 1] + f[i] ;
}
for(int i = 1 , mid = 0 , r = 0 ; i <= lena ; i++) {
if(i <= r) hr[i] = min(hr[(mid << 1) - i] , r - i + 1);
while(A[i - hr[i]] == A[i + hr[i]]) {
hr[i]++;
}
if(i + hr[i] > r) r = i + hr[i] - 1 , mid = i;
}
f(i , 1 , lena) {
int l = i - hr[i] + 1, r = i + hr[i] - lenb ;
if(l > r) continue;
int mid = (l + r) >> 1;
ans += Sum[mid] - Sum[l - 1] - (Pre[mid] - Pre[l - 1]) * (l - 1);
if(mid != r)
ans += (Pre[r] - Pre[mid]) * (r + 1) - (Sum[r] - Sum[mid]) ;
}
printf("%d" , ans);
return 0;
}