#include <bits/stdc++.h>
using namespace std;
int p[105], q[105], s[105], t[105];
int n, k;
void cheng() {
  for (int i = 1; i <= n; i++) t[i] = p[q[i]];
  memcpy(p, t, sizeof p);
}
void chu() {
  for (int i = 1; i <= n; i++) t[q[i]] = p[i];
  memcpy(p, t, sizeof p);
}
void yi() {
  for (int i = 1; i <= n; i++) p[i] = i;
}
bool same() {
  for (int i = 1; i <= n; i++)
    if (s[i] != p[i]) return 0;
  return 1;
}
bool tp1() {
  yi();
  cheng();
  if (same()) return 1;
  yi();
  chu();
  if (same()) return 1;
  return 0;
}
bool tp2() {
  yi();
  cheng();
  if (!same()) return 0;
  yi();
  chu();
  if (!same()) return 0;
  return 1;
}
bool sameyi() {
  for (int i = 1; i <= n; i++)
    if (i = p[i]) return 0;
  return 1;
}
bool check() {
  yi();
  if (same()) return 0;
  if (k == 1) return tp1();
  if (tp2()) return 0;
  yi();
  for (int i = 1; i <= k; i++) {
    cheng();
    if (!((k - i) & 1))
      if (same()) return 1;
    if (sameyi()) break;
  }
  yi();
  for (int i = 1; i <= k; i++) {
    chu();
    if (!((k - i) & 1))
      if (same()) return 1;
    if (sameyi()) break;
  }
  return 0;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d", q + i);
  for (int i = 1; i <= n; i++) scanf("%d", s + i);
  if (check())
    puts("YES");
  else
    puts("NO");
  return 0;
}
