The Bitlandians are quite weird people. They do everything differently. They have a different alphabet so they have a different definition for a string.

A Bitlandish string is a string made only of characters "0" and "1".

BitHaval (the mayor of Bitland) loves to play with Bitlandish strings. He takes some Bitlandish string *a*, and applies several (possibly zero) operations to it. In one operation the mayor may take any two adjacent characters of a string, define one of them as *x* and the other one as *y*. Then he calculates two values *p* and *q*: *p* = *x* *xor* *y*, *q* = *x* *or* *y*. Then he replaces one of the two taken characters by *p* and the other one by *q*.

The *xor* operation means the bitwise excluding OR operation. The *or* operation is the bitwise OR operation.

So for example one operation can transform string 11 to string 10 or to string 01. String 1 cannot be transformed into any other string.

You've got two Bitlandish strings *a* and *b*. Your task is to check if it is possible for BitHaval to transform string *a* to string *b* in several (possibly zero) described operations.
The first line contains Bitlandish string *a*, the second line contains Bitlandish string *b*. The strings can have different lengths.

It is guaranteed that the given strings only consist of characters "0" and "1". The strings are not empty, their length doesn't exceed 10<sup class="upper-index">6</sup>.
# Read input strings a and b
a = input().strip()
b = input().strip()

# Check if the lengths of a and b are the same
if len(a) != len(b):
    print("NO")
else:
    # Check if a and b have different values at the same position
    if any(a[i] != b[i] for i in range(len(a))):
        print("NO")
    else:
        # Check if there is a '1' in both a and b at the same position
        if '1' in a and '1' in b:
            print("NO")
        else:
            print("YES")
