object Scanner {
  private val buf = new Array[Byte](1024); private var ptr = 0; private var len = 0
  @inline private def isPrintableChar(c: Int): Boolean = 33 <= c && c <= 126
  @inline private def hasNextByte(): Boolean =
    if (ptr >= len) { ptr = 0; len = System.in.read(buf); len > 0 } else { true }
  @inline private def hasNext(): Boolean = {
    while (hasNextByte() && !isPrintableChar(buf(ptr))) ptr += 1
    hasNextByte()
  }
  @inline private def readByte(): Byte =
    if (hasNextByte()) { val res = buf(ptr); ptr += 1; res } else { -1 }
  def next(): String = {
    if(!hasNext()) ???
    val sb = new StringBuilder; var b = readByte()
    while (isPrintableChar(b)) { sb.append(b.toChar); b = readByte() }
    sb.toString
  }
  def nextInt(): Int = {
    val n = nextLong()
    if (n < Int.MinValue || Int.MaxValue < n) ???
    n.toInt
  }
  def nextLong(): Long = {
    if(!hasNext()) ???
    var minus = false; var b = readByte()
    if (b == '-') { minus = true; b = readByte() }
    def go (b: Byte, n: Long = 0): Long =
      if ('0' <= b && b <= '9') { go(readByte(), n * 10 + b - '0') }
      else if (minus) { -n } else { n }
    go(b)
  }
  def nextDouble(): Double = next.toDouble
}



object Main extends App {

  val n = Scanner.nextInt()
  val p = Array.fill(n)(Scanner.nextInt())
  //片寄せパターン
  var frontcount = 0
  while (frontcount < n && p(frontcount) == frontcount+1){
    frontcount = frontcount + 1
  }
  var backcount = 0
  while (backcount < n && p(n-backcount-1) == n - backcount){
    backcount = backcount + 1
  }
  //n-最長の連番-1
  val diff = p.zipWithIndex.map(pp =>{
    if (pp._2 == 0){
      1
    } else {
      pp._1 - p(pp._2-1)
    }
  })
  val succession = diff.foldLeft((0,0,false))((d,i)=>{
    if (d._3){
      if (i==1){
        (d._1,d._2+1,true)
      } else {
        if (d._2 == 1){
          d
        } else {
          (Array(d._1,d._2).max,0,false)
        }
      }
    } else {
      if (i==1){
        (d._1,1,true)
      } else{
        d
      }
    }
  })._1
  println(Array(n-succession-1,n-Array(frontcount,backcount).max-1).min)
}