#include <bits/stdc++.h>
using namespace std;
const int INF = (1 << 30) - 1;
const long long LINF = (1ll << 62) - 1;
const int DIRX[] = {-1, 0, 0, 1, -1, -1, 1, 1},
          DIRY[] = {0, -1, 1, 0, -1, 1, -1, 1};
const double ERR = 1e-11, PI = (2 * acos(0.0));
template <class T>
inline T MIN(T a, T b) {
  return ((a < b) ? (a) : (b));
}
template <class T>
inline T MAX(T a, T b) {
  return ((b < a) ? (a) : (b));
}
template <class T>
inline T ABS(T a) {
  return ((a < 0) ? (-a) : (a));
}
template <class T>
inline void checkMIN(T& a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkMAX(T& a, T b) {
  if (a < b) a = b;
}
template <class T>
inline T SQR(T x) {
  return (x * x);
}
template <class T>
T GCD(T a, T b) {
  return ((!b) ? (a) : GCD(b, a % b));
}
template <class T>
T fastPow(T Base, T Power) {
  T Result = 1;
  while (Power > 0) {
    if (Power & ((T)1)) Result *= Base;
    Power >>= 1;
    Base *= Base;
  }
  return Result;
}
template <class T>
T fastModPow(T Base, T Power, T Mod) {
  T Result = 1;
  while (Power > 0) {
    if (Power & ((T)1)) Result = (Result * Base) % Mod;
    Power >>= 1;
    Base = (Base * Base) % Mod;
  }
  return (Result % Mod);
}
inline int compDouble(double x, double y) {
  double d = x - y;
  if (d - ERR > 0.0)
    return 1;
  else if (d + ERR < 0.0)
    return -1;
  else
    return 0;
}
int main() {
  int _kase = 1;
  int x;
  while (_kase--) {
    cin >> x;
    if (x < 2)
      cout << x << endl;
    else if (x < 3)
      cout << 3 << endl;
    else if (x < 4)
      cout << 5 << endl;
    else if (x < 6)
      cout << 3 << endl;
    else if (x < 8)
      cout << 5 << endl;
    else {
      int e = 0;
      if (x % 2) {
        e++;
        x--;
      }
      for (int i = 1;; i++) {
        int tot = SQR((1 + i) / 2) + SQR(i / 2);
        tot *= 4;
        tot += 4 * (i / 2);
        if (tot >= x) {
          cout << (1 + 2 * i) << endl;
          break;
        }
      }
    }
  }
  return 0;
}
