Example

Input

6 3
1 0 0 1 0 1
1 3 2


Output

1
#define _USE_MATH_DEFINES

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include <list>

using namespace std;

typedef pair<long long int, long long int> P;

long long int INF = 1e18;
long long int MOD = 1e9 + 7;

long long int cnt[100000];

int main(){
	
	int N, M;
	cin >> N >> M;
	
	int num = 0;
	
	for(int i = 0; i < N; i++){
		int p;
		cin >> p;
		num *= 2;
		num += p;
	}
	queue<int> que;
	que.push(num);
	
	for(int i = 0; i < (1 << N); i++){
		cnt[i] = INF;
	}
	
	for(int loop = 0; loop < (1 << N); loop++){
		int sz = que.size();
		if(sz == 0){
			break;
		}
		for(int i = 0; i < sz; i++){
			num = que.front();
			que.pop();
			if(cnt[num] != INF){
				continue;
			}
			cnt[num] = loop;
			for(int j = 0; j < N - 1; j++){
				int d1 = (num & (1 << j));
				int d2 = (num & (1 << (j + 1)));
				que.push(num + d1 - d2 / 2);
			}
		}
	}
	
	num = 0;
	int bin = 0;
	for(int i = 0; i < M; i++){
		int p;
		cin >> p;
		for(int j = 0; j < p; j++){
			num *= 2;
			num += bin;
		}
		bin++;
		bin %= 2;
	}
	
	long long int ans = cnt[num];
	
	for(int i = 0; i < N; i++){
		if(num & (1 << i)){
			num -= (1 << i);
		}else{
			num += (1 << i);
		}
	}
	
	cout << min(ans, cnt[num]) << endl;
	
	return 0;
}
