import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = st.hasMoreTokens() ? Integer.parseInt(st.nextToken()) : 0;
int M = st.hasMoreTokens() ? Integer.parseInt(st.nextToken()) : 0;
st = new StringTokenizer(br.readLine());
// cnt : 총 이동 횟수 저장할 변수
int cnt = 0;
// want : 찾아야 할 숫자를 저장할 변수
int want;
// Queue 역할을 할 list
ArrayList<Integer> list = new ArrayList();
// list는 Q의 길이만큼 초기화
while (list.size() < N) {
// cnt 잠시 빌려 사용
list.add(++cnt);
}
// cnt 초기화
cnt = 0;
// 다음 원하는 숫자를 찾을 때 까지 반복
while (st.hasMoreTokens()) {
// want = 찾고 싶은 문자 저장
want = Integer.parseInt(st.nextToken());
// wnat가 list의 첫번째 값과 같다면
// 조건 1에 해당하기 때문에 그냥 삭제
if (want == list.get(0)) {
list.remove(0);
// 아래 실행문들 실행하지 않고 while 조건문으로 돌아감
continue;
}
// 찾으려는 숫자의 인덱스 위치가
// (리스트 크기-찾으려는 숫자의 인덱스 번호)보다 크면
// 큐의 뒷부분에 위치하고 있는것이기 때문에 if문 타고 뒤에서 부터 탐색
if (list.size() - list.indexOf(want) < list.indexOf(want)) {
// 뒤의 값 앞으로 이동
// 처음 이동시 뒤로 거꾸로 이동하기 때문에 counting 되어야함
cnt++;
// 원하는 값을 찾을 때 까지 while문 반복
while(list.get(list.size() - 1) != want) {
// 뒤의 값을 앞으로 이동시키기 위한 add( )
list.add(0, list.get(list.size() - 1));
// 맨 마지막 값을 맨 앞으로 옮겼으니 삭제해줌
list.remove(list.size() - 1);
// 이동이 일어났으므로 cnt+=1
cnt++;
}
// want값을 지워야 하기때문에 삭제
list.remove(list.size() - 1);
} else {
// 앞의 값 뒤로 이동
while(list.get(0) != want) {
// 맨 처음에 있는 값을 맨 뒤로 이동
list.add(list.size(), list.get(0));
// 맨 앞에 있는 값은 옮겨진걸로 되어야해서 지움
list.remove(0);
// 이동이 일어났으므로 cnt+=1
cnt++;
}
// want값을 지워야 하기 때문에 삭제
list.remove(0);
}
}
System.out.println(cnt);
}
}