#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

int n, m;
int niz[13];
pair <int, int> oper[70];
bool stani = false;
int LIMIT;
int sol;

void solve(int last, int kol) {
	bool ok = true;
	
	if (kol > LIMIT) return;
	
	for(int i = 0; i < n; ++i) if (niz[i] != i + 1) ok = false;
	if (ok) {if (sol > kol) sol = kol; return;}

	for(int i = 0; i < m; ++i) {
		if (last == i) continue;
		if (oper[i].first == oper[i].second) continue;

		swap(niz[oper[i].first], niz[oper[i].second]);
		solve(i, kol + 1);
		swap(niz[oper[i].first], niz[oper[i].second]);
	}
}

int main(void) {
	scanf("%d %d", &n, &m);
	
	LIMIT = 2 * m + 2;
	sol = 2 * m + 3;
	
	for(int i = 0; i < n; ++i) scanf("%d", &niz[i]);
	for(int i = 0; i < m; ++i) {
		scanf("%d %d", &oper[i].first, &oper[i].second);
        --oper[i].first; --oper[i].second;
    }

	solve(-1, 0);
	
	printf("%d\n", sol);

	//system("pause");
	return 0;
}
