#include <bits/stdc++.h>
using namespace std;
int vis1[110], vis2[110];
int q[110], p[110], t[110], tmp[110];
int a[110], s[110];
void gao1(int n) {
  int i;
  for (i = 1; i <= n; i++) tmp[i] = p[q[i]];
  memcpy(p, tmp, sizeof(p));
}
void gao2(int n) {
  int i;
  for (i = 1; i <= n; i++) tmp[q[i]] = p[i];
  memcpy(p, tmp, sizeof(p));
}
int jud(int n) {
  int i;
  for (i = 1; i <= n; i++)
    if (s[i] - p[i]) return 0;
  return 1;
}
int main() {
  int n, k, i, j;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) scanf("%d", &q[i]);
  for (i = 1; i <= n; i++) scanf("%d", &s[i]), p[i] = i;
  if (jud(n)) {
    puts("NO");
    return 0;
  }
  for (i = 1; i <= k; i++) {
    gao1(n);
    vis1[i] = jud(n);
  }
  for (i = 1; i <= n; i++) p[i] = i;
  for (i = 1; i <= k; i++) {
    gao2(n);
    vis2[i] = jud(n);
  }
  if (vis2[1] && vis1[1] && k > 1) {
    puts("NO");
    return 0;
  }
  for (i = 1; i <= k; i++)
    if ((vis1[i] || vis2[i]) && i % 2 == k % 2) {
      puts("YES");
      return 0;
    }
  puts("NO");
}
