spring_sunshine 2022. 8. 22. 22:53

# 18223 러버덕

 

# 장꾸 영훈

import sys
input = sys.stdin.readline
pw = input() 
k = int(input())
#1,2,3,4 -> 2**4수열 생성
num = []
n = 0
for i in range(len(pw)-1,-1,-1):
  if pw[i]=='1' or pw[i]=='6' or pw[i]=='2' or pw[i]=='7':
    #num[n] = i
    num.insert(n,i)
    n += 1
    if pw[i]=='6':
      #pw[i] = '1' 이 방식은 수정불가
      pw = pw.replace('6','1')
    elif pw[i]=='7':
      pw = pw.replace('7','2')
print(num)

n = 0
k -= 1
while k>0:
  # k를 2로 나누면서 홀수면 숫자바꿈
  if k%2==1:
    if pw[num[n]]=='1': 
      pw = pw.replace('1','6')
    elif pw[num[n]]=='2':
      pw = pw.replace('2','7')
  
  k /= 2
  n+=1
  
print(pw)

 

# 1062

import sys
input = sys.stdin.readline
      
n,k= map(int,input().split())
if k<5:
  print(0) 
  exit()
elif k ==26:
  print(n)
  exit()

know_list =['a','n','t','i','c']
words = [set(input().lstrip('anta').rstrip('tica')) for _ in range(n)]
learn = [False] * 26
ans = 0

for c in know_list:
    learn[ord(c) - ord('a')] = True  


def dfs(idx, cnt):
  global ans
  if cnt == k-5:
    read = 0
    for word in words:
      for w in word: 
        if not learn[ord(w) - ord('a')]:  
          break
        else:
          read += 1
    ans = max(ans, read)
    return 

  for i in range(idx, 26):
    if not learn[i]:
      learn[i] = True
      dfs(i, cnt+1)
      learn[i] = False


dfs(0,0)
print(ans)