package timus;
import java.util.*;
/**
* Created by sherxon on 2016-11-26.
*/
public class Metro1119 {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int n=in.nextInt(); //col 3
int m=in.nextInt(); //row 2
int k=in.nextInt();
int num=(n+1)*(m+1);
GMetro g=new GMetro(num+1);
for (int i = 1; i <=num; i++) {
g.addVertex(i);
}
int to, from, col, row;
for (int i = 0; i < k; i++) {
col=in.nextInt(); //1 3 1
row=in.nextInt(); //1 2 2
to=col+1 +row*(n+1); //6 12
from=to-(n+m);
g.addEdge(from, to, Math.sqrt(20000));
}
for (int i = 1; i <=num; i++) {
if( i % (n+1)!=0) {
g.addEdge(i, i+1, 100);
}
g.addEdge(i, n+m-1+i, 100);
}
int a = g.findShortestPath(1);
System.out.println(a);
}
private static class GMetro{
Map<Integer, V> map;
public GMetro(int num) {
map= new HashMap<>(num);
}
public void addVertex(Integer v){
V vertex= new V(v);
map.putIfAbsent(v, vertex);
}
public void addEdge(Integer from, Integer to, double w){
V fromV=map.get(from);
V toV=map.get(to);
if(fromV!=null && toV!=null) {
E e= new E(fromV, toV, w);
fromV.edges.add(e);
}
}
public int findShortestPath(Integer s) {
List<V> q= new ArrayList<>();
for (Map.Entry<Integer, V> entry : map.entrySet()) {
V v=entry.getValue();
v.dest = v.label == s ? 0 : Double.MAX_VALUE;
q.add(v);
}
while (!q.isEmpty()){
V v=null;
Double min=Double.MAX_VALUE;
for (V v1 : q) {
if(min > v1.dest){
v=v1;
min=v1.dest;
}
}
if(v==null){
V last=map.get(map.size());
return (int)Math.round(last.dest);
}
for (E edge : v.edges) {
if(edge.to.dest > edge.weight+ v.dest){
edge.to.dest=edge.weight+v.dest;
}
}
q.remove(v);
}
//Double max=-1.0;
V last=map.get(map.size());
return (int)Math.round(last.dest);
}
private class V implements Comparable{
V parent;
List<E> edges;
double dest;
int label;
public V(int label) {
this.label = label;
this.edges= new ArrayList<>();
}
@Override
public int compareTo(Object o) {
return (int) (this.dest - ((V)o).dest);
}
}
private class E {
V from;
V to;
double weight;
public E(V from, V to, double weight) {
this.from = from;
this.to = to;
this.weight = weight;
}
}
}
}