Problem:
りんごと桃

福島県は果物の産地としても有名で、その中でも特に桃とりんごは全国でも指折りの生産量を誇っています。ところで、ある販売用の英文パンフレットの印刷原稿を作ったところ、手違いでりんごに関する記述と桃に関する記述を逆に書いてしまいました。

あなたは、apple と peach を修正する仕事を任されましたが、なにぶん面倒です。１行の英文を入力して、そのなかの apple という文字列を全て peach に、peach という文字列を全てapple に交換した英文を出力するプログラムを作成してください。

Input

英文（半角英数字、空白、記号を含む）が１行に与えられます。入力される文字列の長さは 1000 以下です。

Output

apple とpeach という文字列を交換した英文を１行に出力します。

Sample Input

the cost of one peach is higher than that of one apple.

Output for the Sample Input

the cost of one apple is higher than that of one peach.

Solution in C# (judge verdict: Wrong Answer)

using System;
using System.Linq;

namespace V0050{
    public class Program{
        public static void Main(string[] args){
            var sr = new StreamReader();
            //---------------------------------
            Console.WriteLine(
                sr.Next<string>(1000)
                    .TakeWhile(s => s != null)
                    .Select(s =>{
                        if(s == "apple") return "peach";
                        if(s == "peach") return "apple";
                        if(s == "apple.") return "peach.";
                        if(s == "peach.") return "apple.";
                        return s;
                    })
                    .ToJoinedString()
                );
            //---------------------------------
        }
    }

    public static class ExMethod{
        public static string ToJoinedString<T>(
            this System.Collections.Generic.IEnumerable<T> src, string sep = " "){
            var sb = new System.Text.StringBuilder();
            foreach(var s in src){
                sb.Append(s);
                sb.Append(sep);
            }
            return sb.ToString().TrimEnd(sep.ToCharArray());
        }
    }

    public class StreamReader{
        private readonly char[] _c = {' '};
        private int _index = -1;
        private string[] _input = new string[0];

        public T Next<T>(){
            if(_index == _input.Length - 1){
                _index = -1;
                while(true){
                    string rl = Console.ReadLine();
                    if(rl == null){
                        if(typeof(T).IsClass) return default(T);
                        return (T)typeof(T).GetField("MinValue").GetValue(null);
                    }
                    if(rl != ""){
                        _input = rl.Split(_c, StringSplitOptions.RemoveEmptyEntries);
                        break;
                    }
                }
            }
            return (T)Convert.ChangeType(_input[++_index], typeof(T), System.Globalization.CultureInfo.InvariantCulture);
        }

        public T[] Next<T>(int x){
            var ret = new T[x];
            for(var i = 0; i < x; ++i) ret[i] = Next<T>();
            return ret;
        }
    }
}