; next identical popcount

(define (popcount n)
  (let loop ((n n) (count 0))
    (if (zero? n) count
      (loop (logand n (- n 1)) (+ count 1)))))

(define (next n)
  (let ((p (popcount n)))
    (do ((n (+ n 1) (+ n 1)))
        ((= (popcount n) p) n))))

(display (next 15)) (newline)
(display (next 23)) (newline)