Shortest code to make a Too-low --- Too-high game You have to make a game Too-low --- Too-high (TLTH) in shortest code (in bytes)  

Game rules:


Computer will choose a random number out of integer range (-32768..32767).
Now you will think of a number and input it.  
The computer will tell if your number is lower (TOO LOW) or higher (TOO HIGH) than the chosen number.
When you guess the number, the computer should display Congrats! You found the number!.  


Code Rules:


Do not use the characters T, O, L, W, H, I and G (neither lowercase nor uppercase) in string or character literals.
For instance:

tolower(T);  // Acceptable  
cout&lt;&lt;"T";   // Unacceptable
char ch='T'; // Unacceptable

Remove 300 bytes if your code can display the game rules before starting the game.  
Remove 50 bytes if your code can count number of turns and display number of turns taken in the end of game like this:

"Congrats! You found the number in n turns!"


where n is number of turns taken, instead of  

"Congrats! You found the number!"  

Remove 25 bytes from your score if your code can tell user that the number you input is out of integer range.
For example:

Enter the number: 40000  
Sorry! This number is out of range
Please Enter the number again:  

Remove 25 bytes If your code takes the random number not from any built-in random function.  
Remove 10 bytes If your code display "congrats" in color (pick any color except default white).  


Submission Rules:


Add a heading with your language name and score with all bounty calculation and its explanation.
Post your golfed and ungolfed code.


Winner


The answer with least bytes wins.  
If there is a tie, the answer with the more votes wins.
The winner will be chosen after 5 days.  


EDIT:Please show your code's output.
EDIT-2: You can ignore Rule-1 for Rules-2,3 &amp; 4 in Code Rules

Best Of Luck :]
Perl 5.10+: 159 144 bytes &minus; 350 = &minus;206 points

say"Guess 16 bit signed number";$==32767-rand 65536;say(TOO.$",$_&lt;0?LOW:HIGH)while++$i,$_=&lt;&gt;-$=;say"Congrats! You found the number in $i turns!"


Edit 2: With the recent rules change that allows me to use any string literal for the "congrats" message, I can save 15 bytes from my original 159-byte solution.  There's nothing particularly novel or interesting about the new code above as compared to the old code (I just got rid of the p function, and call say directly instead), so the remainder of this post will describe the original code, shown below:

sub p{say join$",@_}p Guess,16,bit,signed,number;$==32767-rand 65536;p(TOO,$_&lt;0?LOW:HIGH)while++$i,$_=&lt;&gt;-$=;p Congrats."!",You,found,the,number,in,$i,turns."!"


Yeah, I'm abusing the hell out of rule 1.  Who needs strings, when you can have barewords? ;-)

Run with perl -M5.010 to enable the Perl 5.10+ say feature (or replace the body of the p function with print join$",@_,$/ for an extra cost of 5 bytes).

Bonus scores:


&minus;300 points: "display the game rules before starting the game"
&minus;50 points: "display number of turns taken in the end of game"


The code contains no string literals in a strict sense, so I'd say that rule 1 is, technically, not violated.  The trick is that, in Perl, without use strict, any identifier that doesn't correspond to a known language keyword or subroutine will simple evaluate to its own name.  The function p then simply takes a list of words and prints them out, separated by spaces.

Example play-through:

Guess 16 bit signed number
0
TOO HIGH
-10000
TOO LOW
-5000
TOO HIGH
-7500 
TOO LOW
-6250
TOO HIGH
-6875
TOO LOW
-6553
TOO HIGH
-6700
TOO HIGH
-6790
TOO LOW
-6745
TOO HIGH
-6767
TOO LOW
-6756
TOO HIGH
-6761
Congrats! You found the number in 13 turns!


Edit: Oh, right, the rules say I need to post an un-golfed version of the code too, so here it goes.  Technically, it's "de-golfed", since I usually compose my code golf programs in more or less fully golfed form from the beginning, and it can sometimes be tricky to remove all the "golfy" optimizations without fundamentally changing how some parts of the program work.  Still, I've at least tried to add whitespace, comments and more meaningful function / variable names:

sub output {
    # print all arguments separated by spaces, plus a newline:
    # (in the golfed code, I use the special variable $" instead of " " for a space)
    say join " ", @_;
}

# print the rules:
output Guess, 16, bit, signed, number;

# choose a random number between -32768 and 32767 inclusive:
# (in the golfed version, using the special variable $= allows
# the int() to be left out, since $= can only take integer values)
$number = int( 32767 - rand 65536 );

# loop until the input equals the chosen number, printing "TOO LOW / HIGH":
# (the loop ends when $diff == 0, since 0 is false in Perl)
output (TOO, $diff &lt; 0 ? LOW : HIGH) while ++$count, $diff = (&lt;&gt; - $number);

# print congratulations, including the loop count:
output Congrats."!", You, found, the, number, in, $count, turns."!";




Ps. As an alternative, if just using barewords instead of strings feels too cheaty for you, here's a 182-byte solution that doesn't use the letters TOLWHIG even in barewords (but does use them in a transliteration operator).  It still gets the same bonuses, for a total score of 182 &minus; 350 = &minus;168 points:

sub t{pop=~y/kpqvxyz/tolwhig/r}say"Guess 16 bit signed number";$==32767-rand 65536;say uc t"kpp ".($_&lt;0?qpv:xyzx)while++$n,$_=&lt;&gt;-$=;say t"Cpnzraks! Ypu fpund kxe number yn $n kurns!"


The output looks exactly the same as above.  Per the (original) rules, I do use the letters t and i in printing the rules, since it's allowed; eliminating even those uses would only cost two extra bytes, though.  Conversely, making all the output uppercase (which, based on comments above, seems to be allowed) would let me save three bytes.