#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5, B = 19992147;
int n, m, ans;
long long t, s;
int pos[maxn], sz[maxn * 4];
long long pw[maxn], h[maxn * 4];
void update(int l, int r, int x, int p, int f, int d) {
  if (l == r) {
    sz[x] += f;
    h[x] += f * d;
    return;
  }
  int mid = (l + r) >> 1;
  if (p <= mid) {
    update(l, mid, x << 1, p, f, d);
  } else {
    update(mid + 1, r, x << 1 | 1, p, f, d);
  }
  sz[x] = sz[x << 1] + sz[x << 1 | 1];
  h[x] = h[x << 1] * pw[sz[x << 1 | 1]] + h[x << 1 | 1];
}
int main() {
  scanf("%d%d", &n, &m);
  pw[0] = 1;
  for (int i = 1; i <= n; ++i) {
    int x;
    scanf("%d", &x);
    t = t * B + x;
    pw[i] = pw[i - 1] * B;
    s += pw[i - 1];
  }
  for (int i = 1; i <= m; ++i) {
    int x;
    scanf("%d", &x);
    pos[x] = i;
  }
  for (int i = 1; i <= m; ++i) {
    update(1, m, 1, pos[i], 1, i);
    if (i >= n) {
      if (h[1] == t + (i - n) * s) {
        ++ans;
      }
      update(1, m, 1, pos[i - n + 1], -1, i - n + 1);
    }
  }
  printf("%d\n", ans);
  return 0;
}
