#include <bits/stdc++.h>
#define mp make_pair
using namespace std;

int n,m;
int a[20];
int dst[20];
int p[20];
int cl(int d) {
	int a[20]; for (int i=1;i<=n;i++) a[i]=::a[i];  //一开始没写这行，所以在第一次执行完之后，会导致第二次处理的初始序列和输入的不一样...

	int gs=0;
	for (int i=1;i<=n;i++) gs+=a[i]==d;
	for (int i=1;i<=m;i+=2) gs-=p[i];
	if (gs!=0) return 1<<30;

	int tmp=d;
	for (int i=1,j=1;i<=m;i++) {
		for (int k=1;k<=p[i];k++) dst[j++]=tmp;
		tmp=!tmp;
	}

	int ret=0;
	for (int i=1,j;i<=n;i++) {
		if (a[i]!=dst[i]) {
			for (j=i+1;j<=n;j++) if (a[j]==dst[i]) break;
			for (int k=j;k>i;k--) a[k]=a[k-1]; a[i]=dst[i];
			ret+=j-i;
		}
	}
	return ret;
}
int main() {
	for (;~scanf("%d%d",&n,&m);) {
		for (int i=1;i<=n;i++) scanf("%d",&a[i]);
		for (int i=1;i<=m;i++) scanf("%d",&p[i]);
		cout<<min(cl(0),cl(1))<<endl;
	}
	return 0;
}
