N, K = gets.split.map(&:to_i)
P = gets.split.map(&:to_i)

def Next _N, _P, _O1, _I, o
	(_N-1).downto(0){|i|
		j = [_I[i]+1, _N].min
		j = _O1[j] while j < _N and _P[j] <= _P[i]
		o[i] = j
	}
end

def Gen _N, _P
	io = (0..._N).to_a # 0
	Next(_N, _P, io, io, io)
	o1 = io.dup # 1
	return Enumerator.new{|y|
		y << o1.dup # 1
		loop {
			Next(_N, _P, o1, io, io)
			y << io.dup # 2, 3, 4,...
		}
	}
end

RL = Gen(N, P.map{|_| -_ }).next
LU = Gen(N, P.reverse).next.map!{|i| N-1-i }.reverse!

UP = [1] * N
(N-2).downto(0){|i|
	UP[i] = P[i] < P[i+1] ? UP[i+1]+1 : 1
}
IsPM = lambda{|i|
	return K <= UP[i]
}

pm, n = IsPM[0] ? [1, 0] : [0, 1]
(N-K).times{|i|
#p({:i=>i, :IsPM=>IsPM[i+1], :RU=>RU[i], :LU=>LU[i+K]})
	if IsPM[i+1]
		pm += 1
	elsif RL[i] < i+K or i < LU[i+K]
		n += 1
	end
}

p n+[pm,1].min
