import java.util.*;

class Problem {
  long n;
  long a = 0;
  long b = 0;
  final long START_DISTANCE_FROM_ORIGIN = 2;

  public Problem(long n) {
    this.n = n;
  }

  public void solve() {
    for (long i = 1; i * i <= n; i++) if (n % i == 0) update(i);
  }

  private void update(long i) {
    a = i;
    b = n / i;
  }

  public void show() {
    System.out.println(a + b - START_DISTANCE_FROM_ORIGIN);
  }
}

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    long n = sc.nextLong();

    Problem p = new Problem(n);
    p.solve();
    p.show();
  }
}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz