import java.math.BigInteger;

public class Euler277 {
    static BigInteger solve(String sequence, BigInteger lowerBound) {
        BigInteger A = BigInteger.ONE;
        BigInteger B = BigInteger.ZERO;
        BigInteger C = BigInteger.ONE;

        BigInteger THREE = BigInteger.valueOf(3);
        BigInteger TWO = BigInteger.valueOf(2);
        BigInteger FOUR = BigInteger.valueOf(4);

        for (int i = sequence.length() - 1; i >= 0; --i) {
            char step = sequence.charAt(i);
            if (step == 'D') {
                A = A.multiply(THREE);
                B = B.multiply(THREE);
            } else if (step == 'U') {
                A = A.multiply(THREE);
                B = B.multiply(THREE).subtract(C.multiply(TWO));
                C = C.multiply(FOUR);
            } else if (step == 'd') {
                A = A.multiply(THREE);
                B = B.multiply(THREE).add(C);
                C = C.multiply(TWO);
            }
        }

        BigInteger g = A.gcd(C);
        BigInteger mod = C.divide(g);
        BigInteger aReduced = A.divide(g);

        BigInteger aMod = aReduced.mod(mod);
        BigInteger inv;
        try {
            inv = aMod.modInverse(mod);
        } catch (ArithmeticException e) {
            return BigInteger.valueOf(-1);
        }

        BigInteger bReduced = B.divide(g);
        BigInteger rhs = bReduced.negate().mod(mod);
        BigInteger t0 = rhs.multiply(inv).mod(mod);

        BigInteger n0 = A.multiply(t0).add(B).divide(C);
        BigInteger nStep = A.divide(g);
        BigInteger tStep = mod;

        BigInteger k = BigInteger.ZERO;
        if (n0.compareTo(lowerBound) <= 0) {
            k = lowerBound.subtract(n0).divide(nStep).add(BigInteger.ONE);
        }

        BigInteger tMin = t0.add(k.multiply(tStep));
        if (tMin.compareTo(BigInteger.ZERO) <= 0) {
            BigInteger add = tMin.negate().divide(tStep).add(BigInteger.ONE);
            k = k.add(add);
        }

        BigInteger t = t0.add(k.multiply(tStep));
        return A.multiply(t).add(B).divide(C);
    }

    public static String solve() {
        String sequence = "UDDDUdddDDUDDddDdDddDDUDDdUUDd";
        BigInteger lowerBound = new BigInteger("1000000000000000");
        return solve(sequence, lowerBound).toString();
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
