Harryxun/stf_run huggingface dataset:
def main():
    n = int(input())
    ls1 = list(input())
    ls2 = list(input())

    if ls1[0]==ls2[0]:
        ans = 3
        i =1
        flg = "b"
    else:
        ans = 3
        flg = "a"
        i =2
    
    while 1:


        if ls1[i]==ls2[i]:
            if flg == "a":
                flg = "b"
            else:
                ans = (ans*2)%(10**9+7)

            i += 1

        else:
            if flg == "a":
                ans = (ans*3)%(10**9+7)
            else:
                ans = (ans*2)%(10**9+7)
                flg = "a"
            
            i += 2
        if i >= n:
            break
    
    print(ans)

if __name__ == "__main__":
    main()

### FIXED CODE ###

def main():
    n = int(input())
    ls1 = list(input())
    ls2 = list(input())

    if ls1[0]==ls2[0]:
        ans = 3
        i =1
        flg = "b"
    else:
        ans = 6
        flg = "a"
        i =2

    while 1:

        if i >= n:
            break

        if ls1[i]==ls2[i]:
            if flg == "a":
                flg = "b"
            else:
                ans = (ans*2)%(10**9+7)

            i += 1

        else:
            if flg == "a":
                ans = (ans*3)%(10**9+7)
            else:
                ans = (ans*2)%(10**9+7)
                flg = "a"

            i += 2
        if i >= n:
            break

    print(ans)

if __name__ == "__main__":
    main()
print('Yes' if input()[0] == input()[2] else 'No')

### FIXED CODE ###

N = input()
if N[0] == N[2]:
  print('Yes')
  exit()
print('No')
import sys
sys.setrecursionlimit(100000)
input=lambda : sys.stdin.readline().rstrip('\n')

n=int(input())
h=list(map(int,input().split()))

dp=[10**18 for i in range(n)]
def cost(n):
    if n==0:
        return 0
    if n<0:
        return 10**18
    if dp[n]!=10**18:
        return dp[n]
    dp[n] = min(cost(n-1)+abs(h[n]-h[n-1]),cost(n-2)+abs(h[n]-h[n-2]))
    return dp[n]

print(cost(n-1))


### FIXED CODE ###

# coding: utf-8
n=int(input())
h=list(map(int,input().split()))
dp=[999999999 for i in range(n)]
dp[0]=0
dp[1]=abs(h[1]-h[0])
for i in range(2,n):
    dp[i]=min(dp[i-1]+abs(h[i]-h[i-1]),dp[i-2]+abs(h[i]-h[i-2]))
print(dp[-1])
from scipy.special import comb, factorial

print(input())
print(comb(3, 1, exact=True))

### FIXED CODE ###

from scipy.misc import comb

n, k = tuple(map(int, input().split(' ')))
for i in range(1, k+1):
    # 青玉k個をi個の群に分割する。これはk個の青玉の間のk-1箇所のいずれかからi-1個を選んで仕切りとすることで可能
    # これはk-1Ci-1
    # その上で、できたi個の群の前後i+1箇所に赤玉を埋めていく
    # はじめに、i個の群の内側であるi-1箇所には必ず1つ以上赤玉が存在しなければならないので、予めi-1個の赤玉を配置したものとみなす
    # 結局、n-k-(i-1)=n-k-i+1個の赤玉をi+1箇所のどこかにおいていくことと同値
    # これはn-k-i+1個の赤玉とi個の仕切りの並べ方であるので、(n-k+1)Ci
    # 以上より、求める答えはk-1Ci-1 * (n-k+1)Ci
    s = comb(k-1, i-1, exact=True) * comb(n-k+1, i, exact=True)
    print(int(s) % (10 ** 9 + 7))
#atcoder beginner contest 141

weather = input("")

if weather == "Sunny":
    print("Cloudy")
elif weather == "Cloudy":
    prinnt("Rainy")
elif weather == "Rainy":
    print("Sunny")




### FIXED CODE ###

#atcoder beginner contest 141

weather = input("")

if weather == "Sunny":
    print("Cloudy")
elif weather == "Cloudy":
    print("Rainy")
elif weather == "Rainy":
    print("Sunny")
import sys
from scipy.sparse.csgraph import csgraph_from_dense, floyd_warshall, shortest_path
from scipy.sparse import csr_matrix

input = sys.stdin.readline

def main():
    n, m, l = map(int, input().split())
    wf = [[0 for i in range(n)] for j in range(n)]
    for _ in range(m):
        a, b, c = map(int, input().split())
        wf[a-1][b-1] = wf[b-1][a-1] = c
    wf = numpy.array(wf)
    for i in range(n):
        wf[i][i] = 0
    wf = shortest_path(wf, method='FW')
    for i in range(n):
        for j in range(n):
            if wf[i][j] <= l:
                wf[i][j] = 1
            else:
                wf[i][j] = 301
    wf = shortest_path(wf, method='FW')
    q = int(input())
    ans = [None] * q
    for i in range(q):
        s, t = map(int, input().split())
        if wf[s-1][t-1] < 301:
            ans[i] = int(wf[s-1][t-1])
        else:
            ans[i] = 0
    for i in range(q):
        print(ans[i] - 1)

if __name__ == "__main__":
    main()

### FIXED CODE ###

import sys
import numpy as np
from scipy.sparse.csgraph import csgraph_from_dense, floyd_warshall, shortest_path

input = sys.stdin.readline

def main():
    n, m, l = map(int, input().split())
    wf = [[0 for i in range(n)] for j in range(n)]
    for _ in range(m):
        a, b, c = map(int, input().split())
        wf[a-1][b-1] = wf[b-1][a-1] = c
    wf = np.array(wf)
    for i in range(n):
        wf[i][i] = 0
    wf = shortest_path(wf, method='FW')
    for i in range(n):
        for j in range(n):
            if wf[i][j] <= l:
                wf[i][j] = 1
            else:
                wf[i][j] = 301
    wf = shortest_path(wf, method='FW')
    q = int(input())
    ans = [None] * q
    for i in range(q):
        s, t = map(int, input().split())
        if wf[s-1][t-1] < 301:
            ans[i] = int(wf[s-1][t-1])
        else:
            ans[i] = 0
    for i in range(q):
        print(ans[i] - 1)

if __name__ == "__main__":
    main()
def popcount(x):
    '''xの立っているビット数をカウントする関数
    (xは64bit整数)'''

    # 2bitごとの組に分け、立っているビット数を2bitで表現する
    x = x - ((x >> 1) & 0x5555555555555555)

    # 4bit整数に 上位2bit + 下位2bit を計算した値を入れる
    x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333)

    x = (x + (x >> 4)) & 0x0f0f0f0f0f0f0f0f # 8bitごと
    x = x + (x >> 8) # 16bitごと
    x = x + (x >> 16) # 32bitごと
    x = x + (x >> 32) # 64bitごと = 全部の合計
    return x & 0x0000007f

n = int(input())
data = input()
c = 0
countR = 0
mask = 0
for i in range(len(data)):
  #print(i)
  #print(data[i])
  if i != 0:
    c = c << 1
  ci = data[i]
  if ci == 'R':
    countR += 1
  else:
    c += 1
for i in range(n - countR):
  mask += 1
  mask = mask << 1
mask = mask << countR - 1
#print(bin(c))
#print(bin(mask))
#print(countR)
print(popcount(c & mask))

### FIXED CODE ###

N = int(input())
s = input()
r = s.count("R")
print(s[:r].count("W"))
c=raw_input()
if c in [a,e,i,o,u]:
  print "vowel"
else:
  print "consonant"

### FIXED CODE ###

c=raw_input()
if c in "a,e,i,o,u":
  print "vowel"
else:
  print "consonant"
n=input().split(" ")
a=int(n[0])
b=int(n[1])
c=int(n[2])
count=0
while i <=a+b:
     if c/i==0:
       count=i+1
print(count)


### FIXED CODE ###

x=input().split(" ")
a=int(x[0])
b=int(x[1])
c=int(x[2])
count=0
for i in range(a,b+1):
  if c%i==0:
   count+=1
print(count)
N = int(input())
a_lst = list(map(int, input().split()))

M = 0
ans_lst = [0] * N

t = 0
for i in range(N, -1, -1):
    t = 0
    for j in range(2*i, N, i+1):
        t += ans_lst[j]
        
    if (t + 1) % 2 == a_lst[i]:
        ans_lst[i] = 1
    


m = 0
for i in range(N):
    m += ans_lst[i]
    


print(m)
ans_str = ""
for i in range(N):
    if ans_lst[i] == 1:
        if i != 0:
            ans_str += " "
        ans_str += str(i+1)
print(ans_str)




### FIXED CODE ###


N = int(input())
a_lst = list(map(int, input().split()))

M = 0
ans_lst = [0] * N

for i in range(N-1, -1, -1):
    if sum(ans_lst[i::i+1]) % 2 != a_lst[i]:
        ans_lst[i] = 1
    

m = sum(ans_lst)    


print(m)
ans_str = ""
for i in range(N):
    if ans_lst[i] == 1:
        ans_str += str(i+1) + " "
print(ans_str)
from functools import lru_cache

n = int(input())
h = list(map(int, input().split()))

@lru_cache(maxsize=None)
def f(n):
    if n == 0:
        return 0
    elif n == 1:
        return abs(h[1] - h[0])
    return min(f(n-2) + abs(h[n] - h[n-2]), f(n-1) + abs(h[n] - h[n-1]))

print(f(n-1))

### FIXED CODE ###

import sys
from functools import lru_cache

sys.setrecursionlimit(10 ** 7)

n = int(input())
h = list(map(int, input().split()))

@lru_cache(maxsize=None)
def f(n):
    if n == 0:
        return 0
    elif n == 1:
        return abs(h[1] - h[0])
    return min(f(n-2) + abs(h[n] - h[n-2]), f(n-1) + abs(h[n] - h[n-1]))

print(f(n-1))
i = 1
while True:
  x = int(input())
  if !x: break
  print("Case {}: {}".format(i, x))
  i+=1


### FIXED CODE ###

i,x = 1,input()
while x != "0":
  print('Case '+str(i)+': '+x)
  i,x = i+1,input()
t = input()
h = t // 3600
m = (t % 3600) // 60
s = t-3600*h-60*m
print(h, ":", m, ":", s)

### FIXED CODE ###

S = int(input())
h = S//3600
m = (S % 3600) // 60
s = S-3600*h-60*m
print(str(h)+":"+str(m)+":"+str(s))
import sys
input = sys.stdin.readline
A, B, K = [int(x) for x in input().rstrip().split()]
import numpy as np
x = np.arange(A, B + 1)
left = x[:K]
right = x[::-1][:K]
ans = []
for i in left:
    if i not in ans:
        ans.append(i)
for j in right:
    if j not in ans:
        ans.append(j)
ans.sort()
for k in ans:
    print(k)

### FIXED CODE ###

import sys
input = sys.stdin.readline
A, B, K = [int(x) for x in input().rstrip().split()]
left = [int(x) for x in range(A, A+K)]
right = [int(x) for x in range(B, B-K, -1)]
ans = []
for i in left:
    if i not in ans and i <= B:
        ans.append(i)
for j in right:
    if j not in ans and j >= A:
        ans.append(j)
ans.sort()
for k in ans:
    print(k)
a[0] = input()
a[1] = input()
print a[1] + a[0]

### FIXED CODE ###

L,R = input().split()
k = R + L
print (k)
N, H = map(input().split())
D = [[0, 0] for i in range(2 * N)]
for i in range(N):
  a, b = map(int, input().split())
  D[2 * i] = [a, 2]
  D[2 * i + 1] = [b, 1]
D.sort(reverse=True)
cnt = 0
while H > 0:
  d = D[0]
  D = D[1:]
  if d[1] == 1:
    H -= d[0]
    cnt += 1
  else:
    k = -(-H // d[0])
    H -= d[0] * k
    cnt += k
print(cnt)

### FIXED CODE ###

N, H = map(int, input().split())
A = 0
B = [0] * (N + 1)
for i in range(N):
  a, b = map(int, input().split())
  A = max(a, A)
  B[i] = b
B.sort(reverse=True)
cnt = 0
i  = 0
while H > 0:
  if B[i] > A:
    H -= B[i]
    cnt += 1
    i += 1
  else:
    k = -(-H // A)
    H -= A * k
    cnt += k
print(cnt)
N = int(input())
Arr = [int(input()) for i in range(N)]


def funct(i, left_max, right_max):
    n = Arr[i]
    if n >=left_max:
        if i==0:
            left_max=0
        else:
            left_max=max(Arr[:i])
    if n>=right_max:
        if i < N-1:
            right_max = max(Arr[i+1:])
        else:
            right_max=left_max
    print(max(left_max, right_max))

    if i == N-1:
        return

    return funct(i + 1, left_max, right_max)


funct(0, 0, max(Arr[1:]))


### FIXED CODE ###

N = int(input())
Arr = [int(input()) for i in range(N)]

left_max=0
right_max=max(Arr)

for i in range(N):
    n = Arr[i]
    if left_max>=right_max:
        print(left_max)
    else:
        if n==right_max:
            if i ==N-1:
                right_max=left_max
                
            else:
                right_max = max(Arr[i+1:])

        print(right_max)

    if i == N-1:
        break
    left_max=max(n,left_max)
n = int(input())
xl = [[int(i) for i in input().split(' ')] for j in range(n)]

ls = sorted([[i-j, i+j] for i, j in xl], key=lambda x: x[1])
i, dr = 0, 0
while True:
    if len(ls)<=1:
        break
    a, b = ls[i], ls[i+1]
    if a[1]>b[0]:
        dr += 1
        ls.pop(i+1)
    else:
        i += 1
        if i+1 >= len(ls):
            break
print(len(ls))

### FIXED CODE ###

n = int(input())
xl = [[int(i) for i in input().split(' ')] for j in range(n)]

ls = sorted([[i-j, i+j] for i, j in xl], key=lambda x: x[1])

i, dr = 0, 0
while True:
    if (len(ls)<=1) | (i+1 >= len(ls)):
        break
    a, b = ls[i], ls[i+1]
    if a[1]>b[0]:
        dr += 1
        ls.pop(i+1)
    else:
        i += 1

print(len(ls))
import sympy

a = int(input())

test_list = sympy.divisors(a)
test_list_modify = [i-1 for i in test_list if i > 2 or i!=8]
print(sum(test_list_modify))

### FIXED CODE ###

a = int(input())
def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n//i)

    # divisors.sort()
    return divisors


test_list = make_divisors(a)
test_list_modify = [i-1 for i in test_list if i > 2 and a//(i-1) == a%(i-1)]
print(sum(test_list_modify))
first = 0;
second = 0;
third = 0;
for var in range(0,10):
	N = input()
	if (N>first):
		third = second
		second = first
		first = N
	elif (N>second):
		third = second
		second = N
	elif (N>third):
		third = N
print (first)
print (second)
print (third)


### FIXED CODE ###

first = 0;
second = 0;
third = 0;
for var in range(0,10):
	N = int(input())
	if (N>first):
		third = second
		second = first
		first = N
	elif (N>second):
		third = second
		second = N
	elif (N>third):
		third = N
print (first)
print (second)
print (third)
i = 1
while True:
    x = int(input().strip())
    if x == 0:
        break
    else:
        print ("""Case {}: {}""").format(i x)
        i += 1

### FIXED CODE ###

i = 1
while True:
    x = int(input().strip())
    if x == 0:
        break
    else:
        print ("Case {}: {}".format(i,x))
        i += 1
# import numpy as np
import sys, math, heapq
from itertools import permutations, combinations
from collections import defaultdict, Counter, deque
from math import factorial, gcd
from bisect import bisect_left, bisect_right

sys.setrecursionlimit(10 ** 7)
MOD = 10 ** 9 + 7
input = lambda: sys.stdin.readline()[:-1]
pl = lambda x: print(*x, sep="\n")
# conv_matrix = lambda l: ["".join(l[i : i + 100]) for i in range(0, len(l), 100)]
A, B = map(int, input().split())

mat = [["."] * 10 for _ in range(5)] + [["#"] * 10 for _ in range(5)]
# for mati in mat:
#     print("".join(mati))

# mat[0][3] = "#"
# mat[3][6] = "#"
# for mati in mat:
#     print("".join(mati))
# exit()

black_count = 1
white_count = 1

for i in range(0, 50, 2):
    if black_count == B:
        break
    for j in range(0, 100, 2):
        if black_count == B:
            break
        mat[i][j] = "#"
        black_count += 1
for i in range(1, 50, 2):
    if white_count == A:
        break
    for j in range(0, 100, 2):
        if white_count == A:
            break
        mat[-i][j] = "."
        white_count += 1

for mati in mat:
    print("".join(mati))


### FIXED CODE ###

# import numpy as np
import sys, math, heapq
from itertools import permutations, combinations
from collections import defaultdict, Counter, deque
from math import factorial, gcd
from bisect import bisect_left, bisect_right

sys.setrecursionlimit(10 ** 7)
MOD = 10 ** 9 + 7
input = lambda: sys.stdin.readline()[:-1]
pl = lambda x: print(*x, sep="\n")
# conv_matrix = lambda l: ["".join(l[i : i + 100]) for i in range(0, len(l), 100)]
A, B = map(int, input().split())

mat = [["."] * 100 for _ in range(50)] + [["#"] * 100 for _ in range(50)]
# for mati in mat:
#     print("".join(mati))

# mat[0][3] = "#"
# mat[3][6] = "#"
# for mati in mat:
#     print("".join(mati))
# exit()

black_count = 1
white_count = 1

for i in range(0, 50, 2):
    if black_count == B:
        break
    for j in range(0, 100, 2):
        if black_count == B:
            break
        mat[i][j] = "#"
        black_count += 1
for i in range(1, 50, 2):
    if white_count == A:
        break
    for j in range(0, 100, 2):
        if white_count == A:
            break
        mat[-i][j] = "."
        white_count += 1

print(100, 100)
for mati in mat:
    print("".join(mati))
from math import factorial
a,b,k=map(int,input().split())
n=math.gcd(a,b)
l=[]
ld=[]
for i in range(1,int(n**0.5)+1):
    if n%i==0:
        l.append(i)
        ld.append(n//i)
if ld[-1]==l[-1]:del ld[-1]
l+=ld[::-1]
print(l[k-1])

### FIXED CODE ###

import fractions
a,b,k=map(int,input().split())
n=fractions.gcd(a,b)
l=[]
ld=[]
for i in range(1,int(n**0.5)+1):
    if n%i==0:
        l.append(i)
        ld.append(n//i)
if ld[-1]==l[-1]:del ld[-1]
l+=ld[::-1]
print(l[-k])
n,m = map(int,input().split())
ali = [int(input()) for _ in range(m)]
dif = []
cap = 0
for num in ali:
  dif.append(num-cap)
  cap = num
dif.append(n-cap+1)
dif[0] += 1
ref = [0,0,1,1]
a,b = 1,1
for i in range(1000):
  a,b = b,a+b
  ref.append(b)
ans = 1
for num in dif:
  ans *= ref[num]
print(ans % 1000000007)

### FIXED CODE ###

n,m = map(int,input().split())
ali = [int(input()) for _ in range(m)]
dif = []
cap = 0
for num in ali:
  dif.append(num-cap)
  cap = num
dif.append(n-cap+1)
dif[0] += 1
ref = [0,0,1,1]
a,b = 1,1
for i in range(100000):
  a,b = b,a+b 
  ref.append(b)
ans = 1
for num in dif:
  ans *= (ref[num] % 1000000007)
print(ans % 1000000007)
from fractions import gcd
import math
N = int(input())
A = list(map(int,input().split()))
L_A = [0]*(N+1)
R_A = [0]*(N+1)
for i in range(N):
    L_A[1+i] = math.gcd(L_A[i], A[i])
for i in reversed(range(N)):
    R_A[i] = math.gcd(R_A[i+1], A[i])
print(max(math.gcd(L_A[i], R_A[i+1]) for i in range(N)))

### FIXED CODE ###

A, B, T= map(int, input().split())

print(T//A*B)
n = input()
ans=0
for i in range(1, n+1):
  ans+=i
print(ans)

### FIXED CODE ###

n = int(input())
ans=0
for i in range(1, n+1):
  ans+=i
print(ans)
N, M = input().split()
a = list.split()
a.sort(reverse=True)
if (a[M-1] >= sum(a) / 4*M)==True
	print("Yes")
else print("No")


### FIXED CODE ###

N, M = map(int,input().split())
a = list(map(int,input().split()))
a.sort(reverse=True)
if a[M-1] >= sum(a) / (4*M):
	print("Yes")
else:
	print("No")
X, Y = map(int, input().split())
if X > Y:
  print(">")
elif X < Y:
  print("<")
else:
  print("=")

### FIXED CODE ###

X, Y = input().split()
if X > Y:
  print(">")
elif X < Y:
  print("<")
else:
  print("=")
n = int(input())
As = list(map(int,input().split()))

def func(idx,lst):
    if len(lst) == 0:
        return 0
    elif lst[0] == idx:
        return func(idx+1,lst[1:])
    else:
        return 1 + func(idx,lst[1:])

out = func(1,As)
if out == len(As):
    print(-1)
else:
    print(out)

### FIXED CODE ###

n = int(input())
As = list(map(int,input().split()))

out = 0
num = 1
for A in As:
    if  A == num:
        num += 1
    else:
        out += 1
if out == n:
    print(-1)
else:
    print(out)
D,N = map(int,input().split())


if N==100:
    N=101
print(100**D)*N


### FIXED CODE ###

D,N = map(int,input().split())


if N==100:
    N=101
print(100**D*N)
import numpy as np

n, w = map(int, input().split())
wv = [list(map(int, input().split())) for _ in range(n)]

dp = np.zeros(w+1)

for w, v in wv:
    dp[w:] = np.maximum(dp[:-w]+v,dp[w:])
print(int(dp[-1]))

### FIXED CODE ###

N = int(input())
h = list(map(int, input().split()))

opt = [0] * len(h)
opt[1] = abs(h[0]-h[1])

for i in range(2,len(h)):
    A = opt[i-1] + abs(h[i-1] - h[i])
    B = opt[i-2] + abs(h[i-2] - h[i])
    opt[i] = min(A, B)
print(opt[-1])
d = {"a": input(), "b": input(), "c": input()}

def func(s):
    if len(d[s]) == 0:
        return upper()
    next = d[s][0]
    d[s] = d[s][1:]
    return func(next)

print(func(a))

### FIXED CODE ###

d = {"a": input(), "b": input(), "c": input()}

def func(s):
    if len(d[s]) == 0:
        return s.upper()
    next = d[s][0]
    d[s] = d[s][1:]
    return func(next)

print(func("a"))
a,b=map(int,input().split())
print(a-2b if a-2b>0 else 0)

### FIXED CODE ###

a,b=map(int,input().split())
print(a-2*b if a-2*b>0 else 0)
from itertools import accumulate, permutations, combinations, combinations_with_replacement, groupby, product
# import math
# import numpy as np  # Pythonのみ！
# from operator import xor
# import re
# from scipy.sparse.csgraph import connected_components  # Pythonのみ！
# ↑cf.  https://note.nkmk.me/python-scipy-connected-components/
# from scipy.sparse import csr_matrix
# import string
import sys
sys.setrecursionlimit(10 ** 5 + 10)
def input(): return sys.stdin.readline().strip()

def resolve():
    S=list(input())
    K=int(input())
    S=S*K

    cnt=0
    gr=groupby(S)
    for key,group in gr:
        if len(list(group))>=2:
            cnt+=1
    print(cnt)

resolve()

### FIXED CODE ###

from itertools import accumulate, permutations, combinations, combinations_with_replacement, groupby, product
# import math
# import numpy as np  # Pythonのみ！
# from operator import xor
# import re
# from scipy.sparse.csgraph import connected_components  # Pythonのみ！
# ↑cf.  https://note.nkmk.me/python-scipy-connected-components/
# from scipy.sparse import csr_matrix
# import string
import sys

sys.setrecursionlimit(10 ** 5 + 10)


def input(): return sys.stdin.readline().strip()


def resolve():
    S = list(input())
    K = int(input())
    l = []
    cnt = 0
    if len(S)==1:
        print(K//2)
    else:
        gr = groupby(S)
        for key, group in gr:
            l.append(list(group))
        if len(l)==1:
            print(len(S)*K//2)
        else:
            for i in range(len(l)):
                cnt += len(l[i]) // 2
                
            if l[0][0] == l[-1][0]:
                dev = len(l[0]) // 2 + len(l[-1]) // 2 - (len(l[-1]) + len(l[0])) // 2
            else:
                dev = 0
            print(cnt * K - dev * (K - 1))


resolve()
a,b,c,k= map(int,input().split())
if k>a:
    if k>a+b:
        print(a-k+a+b)
    else:
        print(a)
else:
    print(k)


### FIXED CODE ###

s=input()
t=input()
if s==t[:-1]:
    print('Yes')
else:
  print('No')
bus = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 4, 3, 2, 1, 0]
for i in xrange(input()):
    s, t = map(int, raw_input().split())
    if s>5:
        print " ".join(map(str, bus[s:bus.index(t, s)+1]))
    else:
        if s<t:
            print " ".join(map(str, range(s, t+1)))
        else:
            print " ".join(map(str, xrange(s, t-1, -1)))
            

### FIXED CODE ###

bus = "0123456789543210123456789"
rbus = "543210"
for i in xrange(input()):
    s, t = raw_input().split()
    if t<s<'6':
        left = rbus.find(s, 0)
        right = rbus.find(t, left)
        print " ".join(rbus[left:right+1])
    else:
        left = bus.find(s, 0)
        right = bus.find(t, left)
        print " ".join(bus[left:right+1])
N, M = list(map(int, input().split()))
ab = [list(map(int, input().split())) for i in range(N)]
cd = [list(map(int, input().split())) for i in range(N)]
for ab_i in ab:
    min_j = -1
    min_manh = float('inf')
    for j, cd_j in enumerate(cd):
        if min_manh > abs(ab_i[0]-cd_j[0])+abs(ab_i[1]-cd_j[1]):
            min_manh = abs(ab_i[0]-cd_j[0])+abs(ab_i[1]-cd_j[1])
            min_j = j+1
    print(min_j)

### FIXED CODE ###

N, M = list(map(int, input().split()))
ab = [list(map(int, input().split())) for i in range(N)]
cd = [list(map(int, input().split())) for i in range(M)]
for ab_i in ab:
    min_j = -1
    min_manh = float('inf')
    for j, cd_j in enumerate(cd):
        if min_manh > abs(ab_i[0]-cd_j[0])+abs(ab_i[1]-cd_j[1]):
            min_manh = abs(ab_i[0]-cd_j[0])+abs(ab_i[1]-cd_j[1])
            min_j = j+1
    print(min_j)
i = 0
takahasi = 0
while i < 4:
  if S[i:i+1] == "+":
    takahasi += 1
  elif S[i:i+1] == "-":
    takahasi -= 1
  i += 1
print(takahasi)

### FIXED CODE ###

from sys import stdin
S = str(stdin.readline().rstrip())
i = 0
takahasi = 0
while i < 4:
  if S[i:i+1] == "+":
    takahasi += 1
  elif S[i:i+1] == "-":
    takahasi -= 1
  i += 1
print(takahasi)
for i in range(1,10):
??for j in range(1,10):
????print  "%dx%d=%d" %(i , j,i*j)

### FIXED CODE ###

for i in range(1,10):
    for j in range(1,10):
       print("{0}x{1}={2}".format(i,j,i*j))
H, W = map(int, input().split())
S = [list(input()) for _ in range(H)]

ds = [(1, 0), (-1, 0), (0, 1), (0, -1)]

for i in range(H):
    for j in range(W):
        if S[i][j] == ".":
            continue

        flag = False
        for dx, dy in ds:
            x, y = i + dx, j + dy
            if x < 0 or W <= x or y < 0 or H <= y:
                continue

            if S[x][y] == "#":
                flag = True
                break

        if not flag:
            print("No")
            exit()
print("Yes")


### FIXED CODE ###

H, W = map(int, input().split())
S = [list(input()) for _ in range(H)]

d = [(-1, 0), (1, 0), (0, -1), (0, 1)]

for i in range(H):
    for j in range(W):
        if S[i][j] == ".":
            continue

        flag = False
        for dx, dy in d:
            i2, j2 = i+dx, j+dy
            if not (0 <= i2 < H and 0 <= j2 < W):
                continue

            if S[i2][j2] == "#":
                flag = True

        if not flag:
            print("No")
            exit()
print("Yes")