You are given string s. Your task is to determine if the given string s contains two non-overlapping substrings "AB" and "BA" (the substrings can go in any order).

Input

The only line of input contains a string s of length between 1 and 105 consisting of uppercase Latin letters.

Output

Print "YES" (without the quotes), if string s contains two non-overlapping substrings "AB" and "BA", and "NO" otherwise.

Examples

Input

ABA


Output

NO


Input

BACFAB


Output

YES


Input

AXBYBXA


Output

NO

Note

In the first sample test, despite the fact that there are substrings "AB" and "BA", their occurrences overlap, so the answer is "NO".

In the second sample test there are the following occurrences of the substrings: BACFAB.

In the third sample test there is no substring "AB" nor substring "BA".
// Importing all important imports

import java.awt.Point;
import static java.lang.System.in;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.math.BigDecimal;
import java.math.MathContext;
//import java.nio.file.Files;
//import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.InputMismatchException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import java.util.Queue;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Set;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;

 
 
/**
@author
* 
$$\      $$\                       $$\                $$$$$$\            
$$$\    $$$ |                      $$ |              $$  __$$\           
$$$$\  $$$$ |$$\   $$\  $$$$$$$\ $$$$$$\    $$$$$$\  $$ /  \__| $$$$$$\  
$$\$$\$$ $$ |$$ |  $$ |$$  _____|\_$$  _|   \____$$\ $$$$\      \____$$\ 
$$ \$$$  $$ |$$ |  $$ |\$$$$$$\    $$ |     $$$$$$$ |$$  _|     $$$$$$$ |
$$ |\$  /$$ |$$ |  $$ | \____$$\   $$ |$$\ $$  __$$ |$$ |      $$  __$$ |
$$ | \_/ $$ |\$$$$$$  |$$$$$$$  |  \$$$$  |\$$$$$$$ |$$ |      \$$$$$$$ |
\__|     \__| \______/ \_______/    \____/  \_______|\__|       \_______|
* 
*/
 
public class Main{
        
        
        public static void solve() throws IOException
        {
            char s[]=ns().toCharArray();
            char s2[]=Arrays.copyOf(s,s.length);
            if(s.length<4)
            {
                out.println("NO");return;
            }
            
            int temp=0,temp2=0,flag=0;
            
            for(int i=0;i<s.length-1;i++)
            {
                
                if(s[i]=='A' && s[i+1]=='B')
                {
                  temp=1; s[i]='X'; s[i+1]='X';
                  break;
                }
                
            }
            for(int i=0;i<s.length-1;i++)
            {
                if(s[i]=='B' && s[i+1]=='A')
                {
                   temp2=1; 
                   break;
                }
            }
            if(temp==1 && temp2==1)out.println("YES");
            else
            {   //out.println("DN");
                temp=0; temp2=0;
                for(int i=0;i<s2.length-1;i++)
                {
                
                if(s2[i]=='B' && s2[i+1]=='A')
                {
                  temp=1; s2[i]='X'; s2[i+1]='X';
                  break;
                }
                
                }
                //out.println(temp);
            for(int i=0;i<s2.length-1;i++)
            {
                if(s2[i]=='A' && s2[i+1]=='B')
                {
                   temp2=1; 
                   break;
                }
            }
            if(temp==1 && temp2==1)out.println("YES");
            else out.println("NO");
            }
                    
            
        }
        
        
        // END OF SOLUTION
        
        
        
        
        // INPUT OUTPUT TEMPLATE
        static String TESTCASES="";
        static PrintWriter out;
        static int Space;
        public static void main(String[] args) throws Exception 
        {
                //generateTestCases(100); 
                long endTime,startTime=System.currentTimeMillis();
                out=new PrintWriter(new OutputStreamWriter(System.out));
                //mytestcases();
                //InputStream myinp=TESTCASES.isEmpty() ? System.in : new ByteArrayInputStream(TESTCASES.getBytes());
                InputStream myinp=System.in;
                init(myinp);
                
                Space=0;
                
                
                //int test=ni();
                //for(int tc=1;tc<=test;tc++)
                    solve(); 
                
                
                out.close();
                endTime=System.currentTimeMillis();
                //printTime("Time: "+(endTime-startTime)+"ms");
        }
        
         // Testcases reader from FILE. If file not found, input is taken from console.
        public static void mytestcases()
        {
            try
            {
            //TESTCASES=new String(Files.readAllBytes(Paths.get("C:\\Users\\user\\Desktop\\out.txt")));
            }
            catch(Exception e){TESTCASES="";}
        }
        public static void generateTestCases(int count)
        {
            PrintStream console=System.out;
            try{
            PrintStream out = new PrintStream(new FileOutputStream("C:\\Users\\user\\Desktop\\out.txt"));
            
            System.setOut(out);
            Random r=new Random();
            System.out.println(count);
            for(int tc=0;tc<count;tc++)
            {
                // generate
            }
            System.setOut(console);
            }
            catch(FileNotFoundException fe){System.setOut(console);}
        }
          
        // Just to print time, not to use anywhere else
        public static void printTime(Object ...obj){if(TESTCASES.length()!=0)System.err.println(Arrays.deepToString(obj));}
        static InputStream is;
        static BufferedReader brr;
        protected static byte[] inbuf = new byte[1024];
        static int lbuffer = 0, pbuffer = 0;
        public static void init(InputStream input) {is=input;brr=new BufferedReader(new InputStreamReader(input));}
        // Fundamental
        protected static int rb(){if(lbuffer == -1)throw new InputMismatchException();if(pbuffer >= lbuffer){pbuffer = 0;try { lbuffer = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); }if(lbuffer <= 0)return -1;}return inbuf[pbuffer++];}       
        protected static String line() throws IOException{return brr.readLine();}   
        protected static boolean isSpace(int c) { return !(c >= 33 && c <= 126); }
        protected static int skip(){ int b; while((b = rb()) != -1 && isSpace(b)); return b; }
        // Inputs
        protected static double nd() throws IOException { return Double.parseDouble(ns()); }
        protected static char nc() { return (char)skip(); }
        protected static String ns() throws IOException{if(Space==1)return line();int b = skip();StringBuilder sb = new StringBuilder();while(!(isSpace(b))){ sb.appendCodePoint(b);b = rb();}return sb.toString();}
        protected static char[] nca(int n){char[] buf = new char[n];int b = skip(), p = 0;while(p < n && !(isSpace(b))){buf[p++] = (char)b;b = rb();} return n == p ? buf : Arrays.copyOf(buf, p);}
        protected static int[] nia(int n) throws IOException{int[] a = new int[n];for(int i = 0;i < n;i++)a[i] = ni();return a;}
        protected static int[][] niaindex(int n) throws IOException{int ea[][]=new int[n][2];for(int i=0;i<n;i++){ea[i][0]=ni();ea[i][1]=i;}return ea;}
        protected static long[] nla(int n) throws IOException{long[] a = new long[n];for(int i = 0;i < n;i++)a[i] = nl();return a;}
        protected static long[][] nlaindex(int n) throws IOException{long ea[][]=new long[n][2];for(int i=0;i<n;i++){ea[i][0]=ni();ea[i][1]=i;}return ea;}
        protected static String[] nsa(int n) throws IOException{String[] a = new String[n];for(int i = 0;i < n;i++)a[i] = ns();return a;    }
        protected static double[] nda(int n) throws IOException{double[] a = new double[n];for(int i = 0;i < n;i++)a[i] = nd();return a;}
        protected static int ni() throws IOException{if(Space==1)return Integer.parseInt(line());int num=0,b;boolean minus = false;while((b = rb())!= -1 && !((b>='0'&&b<='9') || b =='-'));if(b =='-'){minus=true;b = rb();    }while(true){if(b >= '0' && b <= '9'){num = num * 10 + (b - '0');}else{return minus ? -num : num;}b = rb();}}  
        protected static long nl() throws IOException{if(Space==1)return Long.parseLong(line());long num = 0;int b;boolean minus = false;while((b = rb()) != -1 && !((b >= '0' && b <= '9') || b == '-'));if(b == '-'){   minus = true;b = rb();}while(true){if(b >= '0' && b <= '9'){num = num * 10 + (b - '0');}else{return minus ? -num : num;}b = rb();}}
        // Outputs
        public static void pln(){out.println();}
        public static void ps(String s){out.print(s);}
        public static void pi(int s){out.print(s);}
        public static void pl(long s){out.print(s);}
        public static void pd(double s){out.print(s);}
        public static void psp(){out.print(" ");}
        public static void parr(int s[]){out.println(Arrays.toString(s));}
        public static void parr(String s[]){out.println(Arrays.toString(s));}
        public static void parr(long s[]){out.println(Arrays.toString(s));}        
        public static void parr2(int s[][]){for(int i=0;i<s.length;i++)out.println(Arrays.toString(s[i]));}
        public static void parr2(long s[][]){for(int i=0;i<s.length;i++)out.println(Arrays.toString(s[i]));}
        public static void parr2(String s[][]){for(int i=0;i<s.length;i++)out.println(Arrays.toString(s[i]));}
        
}   


// JAVA Template by Mustafa. 2015