#include <cstdio>
#include <algorithm>

using namespace std;

const int MaxN = 13;
const int MaxM = 13*13;

int a[ MaxN ];
int l[ MaxN ];
int A[ MaxM ], B[ MaxM ];
int n, m, ok;

int dfs( int v ) {
  if( ok ) return 1;
  ok = 1;
  for( int i = 0; i < n; ++i )
    if( a[i] != i ) { ok = 0; break; }
  if( ok ) return 1;
  if( v <= 0 ) return 0;

  for( int i = 0; i < m; ++i ) {
    if( A[i] == B[i] ) continue;
    int x = a[A[i]], y = a[B[i]];
    if( A[i] == x && B[i] == y ) continue;
    if( l[x] == y && l[y] == x ) continue;
    
    int tx = l[x], ty = l[y];
    l[x] = y, l[y] = x;
    swap( a[A[i]], a[B[i]] );
    if( dfs( v-1 ) ) return 1;
    l[x] = tx, l[y] = ty;
    swap( a[A[i]], a[B[i]] );
  }
  return 0;
}

int main( void ) {
  scanf( "%d %d", &n, &m );
  for( int i = 0; i < n; ++i ) {
    scanf( "%d", a+i );
    --a[i];
  }
  for( int i = 0; i < m; ++i ) {
    scanf( "%d %d", A+i, B+i );
    --A[i], --B[i];
  }

  int it = 0;
  
  while( !dfs( it ) ) ++it;
  printf( "%d\n", it );
  return 0;
}
