#include<bits/stdc++.h>
using namespace std;
typedef vector<int>VI;
#define rep(i,n) for(int i=0;i<(n);i++)
int N,M;
VI a;
VI ans;
int main(){
    cin>>N>>M;
    a.resize(M);
    rep(i,M)cin>>a[i],a[i]--;

    ans.resize(N);rep(i,N)ans[i]=i;
    rep(i,M)swap(ans[a[i]],ans[a[i]+1]);



    sort(a.begin(),a.end());
    int mi=M;
    do{
        bool used[10]={0};
        int h=1;
        rep(i,M){
            if((a[i]&&used[a[i]-1])||used[a[i]]||used[a[i]+1]){
                fill_n(used,10,false);
                h++;
            }
            used[a[i]]=true;
        }

        VI _ans(N);
        rep(i,N)_ans[i]=i;
        rep(i,M)swap(_ans[a[i]],_ans[a[i]+1]);
        if(ans==_ans){
            mi=min(mi,h);
        }
    }while(next_permutation(a.begin(),a.end()));

    cout<<mi<<endl;
    return 0;
}