Rapunzel, Rapunzel, let down your hair! Description
I guess everyone knows the fairy tale of Rapunzel and the prince. For those who do not: read it here. However, Rapunzel had just had her hair cut, so it might not be long enough to let her prince climb up! She may get very sad..
Challenge
Your task is to write a function that evaluates what Rapunzel will be saying when the prince calls for her to let her hair down: When her hair is longer than or equal to the tower is tall plus an extra meter (safety guidelines), she becomes veeeery happy and says Aaaah!, with the number of as being the same as length of her hair - height of the tower. Otherwise, her hair does not have sufficient length, and she starts crying: Booho!, where the os before the h equal two thirds of height of the tower - length of her hair, and the os after the h being the rest. The number of os after the B must be rounded, so if you get 2.6, there will be 3 os, and the others must be after the h.
I/O
You are given positive integers (including null) as arguments, as a list or as two single numbers, in the order you find it the most convenient, but you must state in which order you take them. As the output, print what Rapunzel will be saying.
Test cases
In the test cases, the first number will be the hair length.
0, 0 -&gt; 'Bh!' (probably a dry sob..)
2, 1 -&gt; 'Aah!'
1, 2 -&gt; 'Boh!'
1, 4 -&gt; 'Booho!'
4, 1 -&gt; 'Aaaah!'
2, 4 -&gt; 'Boho!'

This is code-golf, so the shortest answer in bytes wins!
Jelly, &nbsp;43 41 40 38 34 33 32&nbsp; 31 bytes

There's probably a much Is there a shorter way though! ? ...this was quite some golfing!

‘:3;ạ¥⁸4ẋ+;€⁹¦7Ṛṭ;8ị“øŻPLC»
ạç&gt;


A full program printing the result*.

Try it online!

How?

‘:3;ạ¥⁸4ẋ+;€⁹¦7Ṛṭ;8ị“øŻPLC» - Link 1: number, abs(hair-tower); number, (hair &gt; tower)?
‘                           - increment -&gt; abs(hair-tower)+1
 :3                         - integer divide by 3 -&gt; (abs(hair-tower)+1)//3
                            -   ...the remainder amount after removing 2/3 rounded
      ⁸                     - chain's left argument, abs(hair-tower)
     ¥                      - last two links as a dyad:
    _                       -   subtract (yields the 2/3 rounded amount)
   ;                        - concatenate
       4ẋ                   - repeat 4 (vectorises) (i.e. [[4,4,...],[4,...]])
         +                  - add (hair &gt; tower)? (vectorises) (i.e. 4s-&gt;5s if so)
             ¦              - sparse application:
          ;€  7             - of:  concatenate €ach with a 7
            ⁹               - to indexes: chain's right argument, (hair-tower)?
               Ṛ            - reverse the list
                ṭ           - tack (hair-tower)?
                 ;8         - concatenate an 8
                    “øŻPLC» - compression of the word "Abroach" &amp; the string "!B"
                   ị        - index into "Abroach!B" (1-indexed &amp; modular, so 0-&gt;B)
                            - implicit (smashed) print

ạç&gt; - Main link: number, hair; number, tower
ạ   - absolute difference -&gt; abs(hair-tower)
  &gt; - greater than? -&gt; (hair &gt; tower)? (1 if so, else 0)
 ç  - call the last link (1) as a dyad


* As a monadic link it returns a list of characters and lists of characters e.g. ['B', [['o', 'o', 'h'], ['o']], '!'], as a full program the implicit print smashes this e.g. Booho!