vector<vector<int>> permute(vector<int>& num) { sort(num.begin(), num.end()); vector<vector<int>> res; do { res.push_back(num); } while (my_next_permutation(&num[0], num.size())); return res; }
int main(){ int r=0,i; int e0[N*2],f0[N*2]; for(i=0;i<N;i++)e0[i]=f0[i]=0,e0[N+i]=f0[N+i]=1; int e[N*2+1]; int f[N*2+1]; e[0]=f[0]=0; do{ for(i=0;i<N*2;i++)e[i+1]=e[i]+e0[i]; do{ for(i=0;i<N*2;i++){ f[i+1]=f[i]+f0[i]; if(e[i]==f[i]&&e[i+1]==f[i+1])break; } if(i==N*2)r++; }while(my_next_permutation(f0,N*2,N*2)); }while(my_next_permutation(e0,N*2,N*2)); printf("%d\n",r); }
vector<vector<int>> permute(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<vector<int>> ans; do{ ans.push_back(nums); }while(my_next_permutation(nums)); return ans; }
int main(){ int N,K,i; scanf("%d%d",&N,&K); int *A=(int*)malloc(4*N); B=(int*)malloc(4*N); for(i=0;i<N;i++)scanf("%d",A+i); for(i=0;i<N;i++)scanf("%d",B+i); for(i=0;i<N;i++)S+=abs(A[i]-B[i]); for(;K--;)R+=S,my_next_permutation(A,N,N); printf("%lld\n",R); free(A); free(B); }