Solution 2 is correct, Solution 1 is wrong because there is always transfer of information in the stranger's speech.<p>Suppose there was only 1 blue-eyed person:<p><pre><code> [before]: Not everyone knows there exist blue eyed people
(the blue eyed person doesn't know it)
[after]: Everyone knows there exist blue eyed people.
</code></pre>
Suppose there are 2 blue-eyed persons:<p><pre><code> [before]: Everyone knows there are blue eyed persons.
Not everyone knows that everyone knows that there are blue eyed persons
(the 2 blue eyed don't know).
If Alice and Bob are blue eyed, Alice knows Bob is blue eyed,
but thinks that Bob thinks nobody has blue eyes.
[after]: Everyone knows and knows that everyone knows etc.
</code></pre>
Suppose there are 3 blue-eyed persons:<p><pre><code> [before]: Everyone knows there are blue eyed people.
Everyone knows everyone knows there are blue eyed people.
Not everyone knows everyone knows everyone knows there are blue eyed people.
This last statement changes after the speech.
</code></pre>
Similarly for any n:<p><pre><code> [before]: (everyone knows that)*(n-1) there are blue eyed people.
[after]: everyone knows everything.
</code></pre>
EDIT: reworded for clarity.
Does anyone know if the solution is posted anywhere? It seems that the only thing the stranger does is to give them a reference point to figure out how many blue-eyed people there are, and not much else.