Hide one message inside another Your task is to hide a small message or string inside a larger block of text. To do so, you must hide the message as capital letters inside the larger 

For the quoted test:  


  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut convallis porta varius. Donec loBortis adipiscing dolor ac Euismod. Ut Mincidunt eY cursus nunc pulVinar, eu mAttis nibh tincidunt. PhaseLlus sEd molestie sapieN. InTeger congue maurIs in Nisi faucibus, at aliquam ligula consEctetur. Quisque laoreet turpis at est cursus, in consequat.


(Emboldened text only to highlight where the letters are)

The secret text reads:

BE MY VALENTINE

You choose how to spread the words out, and should error if you try to hide a string inside another that won't fit either from length or lack of required characters. 

Assume the input is plain text, where the first letter of each sentence may be capitalised or not (those can be lower cased or ignored, but should not be part of the secret message, for clarity). 

You'll get -10 points for writing a second program that recovers the hidden message from a block of text. In this eventuality your score is the average of the two, minus the 10 bonus points.

E.g. If the Message hiding code is 73 characters, and the recovery one is 80, your score is:  

(73+80)/2-10=66.5
Ruby, (69+35)/2-10 = 42

a=gets
$&gt;&lt;&lt;gets.gsub(/./){a[0]!=$&amp;?$&amp;:a.slice!(0).upcase}
1/0if a&gt;?\n


Takes input on STDIN, first line is the message to hide, second line is the text block.  Assumes the secret message is lower-case.  Example input:

codegolf
You'll get -10 points for writing a second program that recovers the hidden message from a block of text. In this eventuality your score is the average of the two, minus the 10 bonus points.


Example output:

You'll get -10 points for writing a seCOnD program that rEcovers the hidden messaGe frOm a bLock oF text. In this eventuality your score is the average of the two, minus the 10 bonus points.


Here's the program to obtain the secret back from the output (again, provided on STDIN):

$&gt;&lt;&lt;gets.scan(/(?&lt;!^|\. )[A-Z]/)*''


One caveat here is that Ruby's lookbehind expressions have to be fixed width, so this code only works for text where the periods are followed by exactly one space.  Suggestions welcome!