const int modnum = 11;
vector<int>HashTable[modnum];
int Hash(int x) { return x % modnum; }
//插入新值
void Insert(int x) {
int addr = Hash(x);
HashTable[addr].push_back(x);
}
//查找元素
bool IsExist(int x) {
int addr = Hash(x);
int l = HashTable[addr].size();//每次计算size都要遍历,所以预先求出,防止在循环中重复计算增加时间复杂度
for (int i = 0; i < l; i++) {
if (HashTable[addr][i] == x)
return true;
}
return false;
}
int Hash(char s[], int n) {
int res = 0;
for (int i = 1; i <= n; i++)
res = (res * base + (s[i] - 'a')) % p;
return res;
}
int Hash(char s[], int n) {
int res = 0;
for (int i = 1; i <= n; i++) {
res = (res * base + (s[i] - 'a')) % p;
a[i] = res;
}
return res;
}
int CalSubstringHash(int l, int r) {
int t = a[l - 1] * pow(base, r - l + 1) % p;
return (a[r] - t + p) % p;
}
const int p = 9999971, base = 101;
int n, m, ha[200011], hb[200011], c[200011];
char a[200011], b[200011];
void solve() {
scanf("%d%d", &n, &m);
scanf("%s%s", a + 1, b + 1);
c[0] = 1;
for (int i=1; i <= 200010; i++)
c[i] = c[i - 1] * base % p;
for (int i = 1; i <= n; i++)
ha[i] = (ha[i - 1] * base + a[i] - 'a') % p;
for (int i = 1; i <= n; i++)
hb[i] = (hb[i - 1] * base + b[i] - 'a') % p;
int ans = 0;
for (int i = 1; i + m - 1 <= n; i++)
if ((ha[i + m - 1] - 1LL * ha[i - 1] * c[m] % p + p) % p == hb[m])
++ans;
printf("%d", ans);
}
const int p = 9999971, base = 101;
const int p2 = 9999973, base2 = 137;
int n, m, ha[200011], hb[200011], c[200011], ha2[200011], hb2[200011], c2[200011];
char a[200011], b[200011];
void solve() {
scanf("%d%d", &n, &m);
scanf("%s%s", a + 1, b + 1);
c[0] = 1, c2[0] = 1;
for (int i = 1; i <= 200010; i++) {
c[i] = c[i - 1] * base % p;
c2[i] = c2[i - 1] * base2 % p2;
}
for (int i = 1; i <= n; i++) {
ha[i] = (ha[i - 1] * base + a[i] - 'a') % p;
ha2[i] = (ha2[i - 1] * base2 + a[i] - 'a') % p2;
}
for (int i = 1; i <= n; i++) {
hb[i] = (hb[i - 1] * base + b[i] - 'a') % p;
hb2[i] = (hb2[i - 1] * base2 + b[i] - 'a') % p2;
}
int ans = 0;
for (int i = 1; i + m - 1 <= n; i++)
if (((ha[i + m - 1] - 1LL * ha[i - 1] * c[m] % p + p) % p == hb[m])&& ((ha2[i + m - 1] - 1LL * ha2[i - 1] * c2[m] % p2 + p2) % p2 == hb2[m]))
++ans;
printf("%d", ans);
}