AOJ - Problem 0017 : Caesar Cipher

シーザー暗号に関する問題です。何故かWAをたくさん出してしまいました。
きっとWAを出した人が多い気がします。

1行の文字列を何文字かずらしそのなかに"the","this","that"が含まれていたら
出力するようにします。

一行ごとに読み取り、その文字列が小文字の'a'〜'z'のときだけ1足して、1文字ずらします。
ずらしてできた文字列をfindを使って"the","this","that"の単語を検索して見つかったら
出力するようにします。

#include <iostream>
#include <string>
using namespace std;

int main(){
	string s, strCopy;
	while (getline(cin, s)) {
		for(int j=0 ; j<26 ; j++){
			for(int i=0 ; i<s.size() ; i++){
				if(s[i]>='a' && s[i]<='z'){
					s[i] = (s[i]=='z')? 'a' : s[i] + 1;
				}
			}
			if( s.find( "the" ) != string::npos || s.find( "this" ) != string::npos || s.find( "that" ) != string::npos){
				cout << s << endl;
			}
		}
	}
	
	return 0;
}