#include <bits/stdc++.h>   using namespace std;   namespace std {   template <typename T, typename U>   struct hash<pair<T, U>> {     hash<T> t;     hash<U> u;     size_t operator()(const pair<T, U>& p) const {       return t(p.first) ^ (u(p.second) << 7);     }   };   }  // namespace std   template <typename T, typename F>   T bsh(T l, T h, const F& f) {     T r = -1, m;     while (l <= h) {       m = (l + h) / 2;       if (f(m)) {         l = m + 1;         r = m;       } else {         h = m - 1;       }     }     return r;   }   template <typename T, typename F>   T bsl(T l, T h, const F& f) {     T r = -1, m;     while (l <= h) {       m = (l + h) / 2;       if (f(m)) {         h = m - 1;         r = m;       } else {         l = m + 1;       }     }     return r;   }   template <typename T>   T gcd(T a, T b) {     if (a < b) swap(a, b);     return b ? gcd(b, a % b) : a;   }   int main(int, char**) {     ios_base::sync_with_stdio(false);     int N;     cin >> N;     ;     int S;     cin >> S;     ;     vector<int> A(N);     for (auto& _cinv : A) cin >> _cinv;     ;     int err = 0;     if (A[S - 1] != 0) {       ++err;       A[S - 1] = 0;     }     vector<int> Q(N, 0);     for (int i = 0; i < N; i++) {       Q[A[i]]++;     }     int i = 1;     for (; i < N && (Q[0] > 1 || Q[i] > 0); ++i) {       if (Q[i] == 0) {         --Q[0];         ++Q[i];         ++err;       }     }     int j = N - 1;     while (i < j) {       if (Q[j] == 0)         --j;       else if (Q[i] > 0)         ++i;       else {         Q[i]++;         Q[j]--;         err++;       }     }     cout << err << endl;   }   