이번 문제는 deque의 rotate 함수를 사용하여 해결하였다. rotate(1)의 경우 해당 문자열은 [1:]+[0]과 같은 형태가 되고, rotate(-1)의 경우 해당 문자열은 [-1]+[:-1]과 같은 형태가 된다. 돌아간 톱니바퀴의 오른쪽에 위치하는 모든 톱니바퀴를 회전시키는 함수와 왼쪽에 위치하는 모든 톱니바퀴를 회전시키는 함수를 각각 재귀함수로 작성하여 해결하였다.
from collections import deque
import sys
input=sys.stdin.readline
wheel={}
for i in range(1, 5):
wheel[i]=deque(list(map(int, list(str(input().replace('\n', ''))))))
n=int(input())
cycle=[]
def right(cur, type):
if cur>4 or wheel[cur-1][2]==wheel[cur][6]:
return
if wheel[cur-1][2]!=wheel[cur][6]:
right(cur+1, -type)
wheel[cur].rotate(type)
def left(cur, type):
if cur<1 or wheel[cur][2]==wheel[cur+1][6]:
return
if wheel[cur+1][6]!=wheel[cur][2]:
left(cur-1, -type)
wheel[cur].rotate(type)
for i in range(n):
cycle.append(list(map(int, input().split())))
right(cycle[-1][0]+1, -cycle[-1][1])
left(cycle[-1][0]-1, -cycle[-1][1])
wheel[cycle[-1][0]].rotate(cycle[-1][1])
answer=0
for i in range(1, 5):
answer+=(2**(i-1))*(wheel[i][0])
print(answer)