#include "paint.h"
using namespace std;
int const INF = 1e9+10;
int const NMAX = 50010;
#include <vector>
#include <map>
#include <bitset>
#include <iostream>
int minimumInstructions(int N, int M, int K, std::vector<int> C, std::vector<int> A, std::vector<std::vector<int>> B) {
map<int,bitset<NMAX>> cmp;
for(int i{};i < M;i++){
for(auto k:B[i]){
cmp[k][i] = 1;
}
}
bitset<NMAX> cur;
bitset<100010> bs(0);
for(int i{};i <= N-M;i++){
cur.set();
for(int j{};j < M;j++){
cur &= cmp[C[i+j]];
cur <<= 1;
if(cur[M]) cur[0] = 1;
if(cur == 0) break;
}
if(cur != 0) bs[i] = 1;
}
int end = 0;
int last = 0;
int cnt = 0;
for(int i{};i <= N-M;i++){
if(!bs[i]) continue;
if(i > end){
if(i > last) return -1;
else end = last,cnt++;
}
last = i+M;
}
if(end < N){
if(last < N) return -1;
else cnt++;
}
return cnt;
}