#include <bits/stdc++.h>
using namespace std;
bool cmp1(pair<int, int> &a, pair<int, int> &b) { return a.first < b.first; }
bool cmp2(pair<int, int> &a, pair<int, int> &b) { return a.first > b.first; }
bool cmp3(pair<int, int> &a, pair<int, int> &b) {
  if (a.first != b.first)
    return a.first < b.first;
  else
    return a.second < b.second;
}
bool cmp4(pair<int, int> &a, pair<int, int> &b) {
  if (a.first != b.first)
    return a.first > b.first;
  else
    return a.second > b.second;
}
bool cmp5(pair<int, int> &a, pair<int, int> &b) {
  if (a.second != b.second)
    return a.second < b.second;
  else
    return a.first < b.first;
}
bool cmp6(pair<int, int> &a, pair<int, int> &b) {
  if (a.second != b.second)
    return a.second > b.second;
  else
    return a.first > b.first;
}
bool cmp7(pair<pair<int, int>, int> &a, pair<pair<int, int>, int> &b) {
  return a.first.first < b.first.first;
}
bool cmpa(pair<pair<int, int>, int> &a, pair<pair<int, int>, int> &b) {
  return a.second > b.second;
}
long long nod(long long a, long long b) {
  while (a != 0 && b != 0)
    if (a > b)
      a %= b;
    else
      b %= a;
  return a + b;
}
long long nok(long long a, long long b) { return (a * b) / nod(a, b); }
void reverse(vector<int> &a, int l, int r) {
  for (int i = l; i <= (l + r) / 2; ++i) swap(a[i], a[r - (i - l)]);
}
int irand(int a, int b) { return rand() % (b - a + 1) + a; }
int fib(int n) {
  if (n < 3) return 1;
  return fib(n - 1) + fib(n - 2);
}
long long binpow(long long a, long long n) {
  if (n == 0) return 1;
  if (n % 2 == 1)
    return binpow(a, n - 1) * a;
  else
    return binpow(a * a, n / 2);
}
int main() {
  int n;
  cin >> n;
  int ans = 1;
  for (int i = 1;; ++i) {
    ans *= 2;
    if (ans > n) {
      cout << i;
      return 0;
    }
  }
}
