Problem:
Score : 100 points

Problem Statement

In AtCoder City, there are three stations numbered 1, 2, and 3.

Each of these stations is operated by one of the two railway companies, A and B. A string S of length 3 represents which company operates each station. If S_i is A, Company A operates Station i; if S_i is B, Company B operates Station i.

To improve the transportation condition, for each pair of a station operated by Company A and one operated by Company B, there will be a bus service connecting them.

Determine if there is a pair of stations that will be connected by a bus service.

Constraints

Each character of S is A or B.

|S| = 3

Input

Input is given from Standard Input in the following format:

S

Output

If there is a pair of stations that will be connected by a bus service, print Yes; otherwise, print No.

Sample Input 1

ABA

Sample Output 1

Yes

Company A operates Station 1 and 3, while Company B operates Station 2.

There will be a bus service between Station 1 and 2, and between Station 2 and 3, so print Yes.

Sample Input 2

BBA

Sample Output 2

Yes

Company B operates Station 1 and 2, while Company A operates Station 3.

There will be a bus service between Station 1 and 3, and between Station 2 and 3, so print Yes.

Sample Input 3

BBB

Sample Output 3

No

Company B operates all the stations. Thus, there will be no bus service, so print No.

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using static System.Console;
using static Program.Input;
using static Program.MyMath;
using static Program.Const;

namespace Program
{
  static class Const
  {
    public static string alp = "abcdefghijklmnopqrstuvwxyz";
    public static string Alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public const long MOD = 1000000007;
    public static int INF = int.MaxValue;
    public static long INFL = long.MaxValue;
  }
  public class Program
  {
    public static void Main()
    {
      WriteLine(ReadLine().Distinct().Count() == 1 ? "No" : "Yes");
    }
  }
  static class Input
  {
    public static void InputLine(out int a, out int b) { var input = ScanIntArray(); a = input[0]; b = input[1]; }
    public static void InputLine(out int a, out int b, out int c) { var input = ScanIntArray(); a = input[0]; b = input[1]; c = input[2]; }
    public static void InputLine(out int a, out int b, out int c, out int d) { var input = ScanIntArray(); a = input[0]; b = input[1]; c = input[2]; d = input[3]; }

    public static void InputLine(out long a, out long b) { var input = ScanLongArray(); a = input[0]; b = input[1]; }
    public static void InputLine(out long a, out long b, out long c) { var input = ScanLongArray(); a = input[0]; b = input[1]; c = input[2]; }
    public static void InputLine(out long a, out long b, out long c, out long d) { var input = ScanLongArray(); a = input[0]; b = input[1]; c = input[2]; d = input[3]; }

    public static void InputLine(out string a, out string b) { var input = ScanStrArray(); a = input[0]; b = input[1]; }
    
    public static int ScanInt() { return int.Parse(ReadLine()); }
    static public uint ScanUint() { return uint.Parse(ReadLine()); }
    static public double ScanDouble() { return double.Parse(ReadLine()); }
    static public long ScanLong() { return long.Parse(ReadLine()); }
    static public ulong ScanUlong() { return ulong.Parse(ReadLine()); }
    static public int[] ScanIntArray() { return ReadLine().Split().Select(x => int.Parse(x)).ToArray(); }
    static public uint[] ScanUintArray() { return ReadLine().Split().Select(x => uint.Parse(x)).ToArray(); }
    static public double[] ScanDoubleArray() { return ReadLine().Split().Select(x => double.Parse(x)).ToArray(); }
    static public long[] ScanLongArray() { return ReadLine().Split().Select(x => long.Parse(x)).ToArray(); }
    static public ulong[] ScanUlongArray() { return ReadLine().Split().Select(x => ulong.Parse(x)).ToArray(); }

    static public string ScanStr() { return ReadLine(); }
    static public string[] ScanStrArray() { return ScanStr().Split(); }
    static public string RegaxReplace(this string arg1, string pattern, string replacement) { return Regex.Replace(arg1, pattern, replacement); }
  }
  static class MyMath
  {
    static public int CountBit(this long a) { if (a == 0) return 0; int c = 1; for (; a > 1; a /= 2) if (a % 2 == 1) c++; return c; }
    static public int Floor2(this int a) { int N = 1; while (N < a) N *= 2; return N / 2; }
    static public long Floor2(this long a) { long N = 1; while (N < a) N *= 2; return N / 2; }
    static public int Ceiling2(this int a) { int N = 1; while (N < a) N *= 2; return N; }
    static public long Ceiling2(this long a) { long N = 1; while (N < a) N *= 2; return N; }
    static public long[] CumSum(this long[] a) { var res = new long[a.Length]; long s = 0; for (int i = 0; i < a.Length; i++) res[i] = (s += a[i]); return res; }
    static public IEnumerable<int> PrimeFactors(this int n)
    {
      int tmp = n;
      for (int i = 2; i * i <= n; i++) while (tmp % i == 0) { tmp /= i; yield return i; }
      if (tmp != 1) yield return tmp;
    }
    static public IEnumerable<long> PrimeFactors(this long n)
    {
      var tmp = n;
      for (long i = 2; i * i <= n; i++) while (tmp % i == 0) { tmp /= i; yield return i; }
      if (tmp != 1) yield return tmp;
    }
    static public int Digit(this int n, int d) { if (d < 0) return 0; return (n % (int)Math.Pow(10, d + 1)) / (int)Math.Pow(10, d); }
    static public int Length(this int n) { if (n < 0) return 0; return (int)Math.Log10(n) + 1; }
    static public int Top(this int n) { return n.Digit(n.Length() - 1); }
    public static bool isPrime(this int p)
    {
      if (p <= 1) return false;
      for (int i = 2; i * i <= p; i++) if (p % i == 0) return false;
      return true;
    }
    public static bool isPrime(this long p)
    {
      if (p <= 1) return false;
      for (long i = 2; i * i <= p; i++) if (p % i == 0) return false;
      return true;
    }
    public static int GCD(int a, int b)
    {
      Func<int, int, int> gcd = null;
      gcd = (x, y) => y == 0 ? x : gcd(y, x % y);
      return a > b ? gcd(a, b) : gcd(b, a);
    }
    public static long GCD(long a, long b)
    {
      Func<long, long, long> gcd = null;
      gcd = (x, y) => y == 0 ? x : gcd(y, x % y);
      return a > b ? gcd(a, b) : gcd(b, a);
    }
    public static ulong extGCD(ulong a, ulong b, ref ulong x, ref ulong y)
    {
      if (b == 0) { x = 1; y = 0; return a; }
      var d = extGCD(b, a % b, ref y, ref x);
      y -= a / b * x;
      return d;
    }
    public static int LCM(int a, int b) { return a * b / GCD(a, b); }
    public static long LCM(long a, long b) { return a * b / GCD(a, b); }
    public static long Inv(this long a, long m = MOD)
    {
      long b = m, u = 1, v = 0;
      while (b != 0)
      {
        long t = a / b;
        a -= t * b;
        swap(ref a, ref b);
        u -= t * v;
        swap(ref u, ref v);
      }
      u %= m;
      if (u < 0) u += m;
      return u;
    }
    private static void swap(ref long a, ref long b) { var t = a; a = b; b = t; }
    public static long ModPow(long a, long n, long m = MOD)
    {
      long res = 1;
      while (n > 0)
      {
        if (n % 2 == 1) res = (res * a) % m;
        a = (a * a) % m;
        n >>= 1;
      }
      return res;
    }
  }

  static class MyLinq
  {
    public static void Sort(this string[] array) { Array.Sort(array, StringComparer.OrdinalIgnoreCase); }
    public static void StringSort(this List<string> list) { list.Sort(StringComparer.OrdinalIgnoreCase); }
    public static string Join<T>(this IEnumerable<T> source, string separator) { return string.Join(separator, source); }
    public static IEnumerable<TItem> Distinct<TItem, TKey>(this IEnumerable<TItem> source, Func<TItem, TKey> keySelector)
    {
      if (source == null)
        throw new ArgumentNullException(nameof(source));

      if (keySelector == null)
        throw new ArgumentNullException(nameof(keySelector));

      var set = new HashSet<TKey>();
      foreach (var item in source)
        if (set.Add(keySelector(item))) yield return item;
    }
  }
}