

from __future__ import annotations







def _a			(	SCREAMING_SNAKE_CASE		:      Dict		)   ->   List[Any]:

 """simple docstring"""






 global graph, reversed_graph, scc, component, visit, stack
 if visit[u]:
  return
 __lowerCAmelCase:       List[Any]            =				True
 for v in graph[u]:
  dfs(SCREAMING_SNAKE_CASE		)
 stack.append(SCREAMING_SNAKE_CASE		)







def _a			(	SCREAMING_SNAKE_CASE		:      int		)   ->   Optional[int]:

 """simple docstring"""






 global graph, reversed_graph, scc, component, visit, stack
 if visit[u]:
  return
 __lowerCAmelCase:       Optional[int]            =				True
 component.append(SCREAMING_SNAKE_CASE		)
 for v in reversed_graph[u]:
  dfsa(SCREAMING_SNAKE_CASE		)







def _a			(	)   ->   Tuple:

 """simple docstring"""






 global graph, reversed_graph, scc, component, visit, stack
 for i in range(SCREAMING_SNAKE_CASE		):
  dfs(SCREAMING_SNAKE_CASE		)
 __lowerCAmelCase:       Tuple            =				[False] * n
 for i in stack[::-1]:
  if visit[i]:
   continue
  __lowerCAmelCase:       Any            =				[]
  dfsa(SCREAMING_SNAKE_CASE		)
  scc.append(SCREAMING_SNAKE_CASE		)
 return scc


if __name__ == "__main__":
  # n - no of nodes, m - no of edges
  _a	,     _a			=       list(map(int, input().strip().split()))

  _a			=       [[] for _ in range(n)]  # graph
  _a			=       [[] for i in range(n)]  # reversed graph
  # input graph data (edges)
  for _ in range(m):
    _a	,     _a			=       list(map(int, input().strip().split()))
    graph[u].append(v)
    reversed_graph[v].append(u)

  _a			=       []
  _a			=       [False] * n
  _a			=       []
  _a			=       []
  print(kosaraju())








def _a			(	SCREAMING_SNAKE_CASE		:      int = 10_00		)   ->   int:

 """simple docstring"""






 __lowerCAmelCase:       Union[str, Any]            =				[0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8]
 # number of letters in twenty, thirty, ..., ninety (0 for numbers less than
 # 20 due to inconsistency in teens)
 __lowerCAmelCase:       Union[str, Any]            =				[0, 0, 6, 6, 5, 5, 5, 7, 6, 6]

 __lowerCAmelCase:       Optional[int]            =				0

 for i in range(1   , n + 1		):
  if i < 10_00:
   if i >= 1_00:
    # add number of letters for "n hundred"
    count += ones_counts[i // 1_00] + 7

    if i % 1_00 != 0:
     # add number of letters for "and" if number is not multiple
     # of 100
     count += 3

   if 0 < i % 1_00 < 20:
    # add number of letters for one, two, three, ..., nineteen
    # (could be combined with below if not for inconsistency in
    # teens)
    count += ones_counts[i % 1_00]
   else:
    # add number of letters for twenty, twenty one, ..., ninety
    # nine
    count += ones_counts[i % 10]
    count += tens_counts[(i % 1_00 - i % 10) // 10]
  else:
   count += ones_counts[i // 10_00] + 8
 return count


if __name__ == "__main__":
  print(solution(int(input().strip())))





