import scala.io.StdIn._

object Main extends App {

  solve()
  def solve(): Unit = {
    val n = readInt()
    if (n == 0) return
    val k = readInt()
    val coordinates = Array.tabulate(n){i ⇒
      val Array(x, y) = readLine.trim.split(' ').map(_.toInt)
      Coordinate(x, y)
    }.sortBy(_.y)
    val bottom = coordinates.map{_.y}.distinct.sorted
    val isOut = Array.fill(n){-1}
    val sortBy60 = coordinates.zipWithIndex.sortBy(c ⇒ c._1.y - c._1.x * math.sqrt(3))(Ordering.Double.reverse)
    val sortBy120 = coordinates.zipWithIndex.sortBy(c ⇒ c._1.y + c._1.x * math.sqrt(3))
    var min = Double.MaxValue
    for (lower ← 0 to math.min(k, bottom.length - 1)) {
      coordinates.indices.foreach{i ⇒ isOut(i) = if (coordinates(i).y < bottom(lower)) -1 else 0}
      var right = 0
      var rest = n - k
      while (right < n && (rest > 1 || isOut(sortBy120(right)._2) == -1)) {
        if (isOut(sortBy120(right)._2) == 0) {
          rest -= 1
          isOut(sortBy120(right)._2) = 1
        }
        right += 1
      }
      if (right < n) isOut(sortBy120(right)._2) = 1
      for (left ← 0 until n if isOut(sortBy60(left)._2) != -1 && right < n) {
        if (isOut(sortBy60(left)._2) == 1) {
          val len = calTriangleLength(bottom(lower), sortBy60(left)._1, sortBy120(right)._1)
          if (min > len)
            min = len
          isOut(sortBy60(left)._2) = -1
          right += 1
          while (right < n && isOut(sortBy120(right)._2) != 0) right += 1
          if (right < n) isOut(sortBy120(right)._2) = 1
        }else {
          isOut(sortBy60(left)._2) = -1
        }
      }
    }
    println("%.12f".format(min))
    solve()
  }
  def calTriangleLength(bottom: Int, left: Coordinate, right: Coordinate): Double = {
    val bl = left.x - (left.y - bottom) / math.sqrt(3)
    val br = right.x + (right.y - bottom) / math.sqrt(3)
    (br - bl) * 3
  }
}

case class Coordinate(x: Int, y: Int)

