#include <bits/stdc++.h>
using namespace std;
const long long BASE = 880301;
const int MAX_N = 200000 + 7;
const long long MOD = 1000000000 + 9;
long long power[MAX_N];
long long hv[MAX_N << 2];
int sz[MAX_N << 2];
int A[MAX_N], B[MAX_N], C[MAX_N];
void add(int o, int l, int r, int p, long long v, int x) {
  if (l == r) {
    hv[o] += v;
    sz[o] += x;
    return;
  }
  int m = (l + r) >> 1;
  if (p <= m)
    add(o << 1, l, m, p, v, x);
  else
    add(o << 1 | 1, m + 1, r, p, v, x);
  hv[o] = (hv[o << 1] * power[sz[o << 1 | 1]] + hv[o << 1 | 1]) % MOD;
  sz[o] = sz[o << 1] + sz[o << 1 | 1];
}
int main() {
  power[0] = 1;
  for (int i = 1; i < MAX_N; i++) power[i] = power[i - 1] * BASE % MOD;
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", &A[i]);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &B[i]);
    C[B[i]] = i;
  }
  long long val = 0;
  long long hv_a = 0;
  int ans = 0;
  for (int i = 1; i <= n; i++) hv_a = (hv_a * BASE + A[i]) % MOD;
  for (int i = 0; i < n; i++) val = (val + power[i]) % MOD;
  for (int i = 1; i < n; i++) add(1, 1, m, C[i], i, 1);
  for (int i = 1; i + n - 1 <= m; i++) {
    add(1, 1, m, C[i + n - 1], i + n - 1, 1);
    long long x = (hv[1] - val * (i - 1) % MOD + MOD) % MOD;
    if (x == hv_a) ans++;
    add(1, 1, m, C[i], -i, -1);
  }
  printf("%d\n", ans);
  return 0;
}
