#![allow(unused_imports,non_snake_case,dead_code)] use std::{cmp::Reverse as Rev,collections::*,iter::*}; use proconio::{marker::*,*}; #[fastout] fn main(){ input!{ n:usize, k:usize, s:[String;n], t:[String;n], } let id=s.iter().cloned().enumerate().map(|(a,b)|(b,a)).collect::>(); let si=s.iter().map(|s|id[s]).collect::>(); let ti=t.iter().map(|t|id[t]).collect::>(); let mut sd=vec![!0;n]; let mut td=vec![!0;n]; for i in 0..n{ sd[si[i]]=i%k; td[ti[i]]=i%k; } if sd==td{ println!("Yes"); } else{ println!("No"); } }