#include<bits/stdc++.h>usingnamespace std;template<typename T>voiddebug(string s,T x){ cout <<s<<"="<< x <<"\n";}typedeflonglong ll;typedefunsignedlonglong ull;const ll N =2e3+5;const ll MOD =998244353;const ll INF =0x7fffffff;int tire[N*N][26];
ll pos;char s[N], t[N];voidinsert(string s){
ll p =0;for(ll i =0; s[i]; i++){
ll n = s[i]-'a';if(tire[p][n]==0)tire[p][n]=++pos;
p = tire[p][n];}}
ll find(string s){
ll p =0;for(ll i =0; s[i]; i++){
ll n = s[i]-'a';if(tire[p][n]==0)return s.length()- i;
p = tire[p][n];}return0;}intmain(){
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
ll n, m;
cin >> n >> m;
cin >> s >> t;for(ll i =0; i < m; i++)insert(t + i);//将字符串t的子集插入O(m*m)
ll ans =0;for(ll i =0; i < n; i++)ans +=find(s + i);//用字符串s的子集去查询O(n*n)
cout << ans;return0;}