#include "paint.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back()
int minimumInstructions(
int N, int M, int K, std::vector<int> C,
std::vector<int> A, std::vector<std::vector<int>> B) {
vector<vector<bool>> cn(M, vector<bool>(N));
int id=0;
map<int,int>mp;
for(int i=0;i<N;i++)mp[C[i]];
for(auto p:mp)mp[p.ff]=id++;
for(int i=0;i<N;i++)C[i]=mp[C[i]];
for(int i=0;i<M;i++){
int m=A[i];
for(int j=0;j<m;j++){
cn[i][B[i][j]]=1;
}
}
vector<int>dp(N);
for(int i=0;i<N;i++)dp[i]=1e9;
for(int i=M-1;i<N;i++){
for(int r=0;r<M;r++){
bool FLAG=1;
for(int j=0;j<M;j++){
int p= (j+r)%M;
if(cn[p][C[i- (M-j-1)]]==0)FLAG=0;
}
if(FLAG){
if(i==M-1){
for(int j=0;j<M;j++)dp[j]=1;
}
else{
for(int j=0;j<M;j++)dp[i-j]=min(dp[i-j],dp[i-M]+1);
}
}
}
}
if(dp[N-1]==1e9)dp[N-1]=-1;
return dp[N-1];
}