Karashi的电灯泡
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Karashi将电灯泡摆成了如下图的形式,其中有的灯泡暗有的灯泡亮。

每个灯泡都对应一个按钮,正常情况下,每次按下按钮时,对应灯泡的状态就会发生变化,即“暗”的会变成“亮”的,“亮”的会变成“暗”的。然而电路似乎出了点问题。每当按下按钮时,不仅相应灯泡的状态会发生变化,与这盏灯相邻灯泡的状态也会发生变化。

例如:
  • 假设a_1是“暗”的、a_2是“”的、a_3是“”的,按下a_2的按钮后,三盏灯的状态变为a_0“亮”、a_0”、a_0”;
  • 假设a_1是“”的、a_2是“”的,按下a_1的按钮后,两盏灯的状态变为a_0”、a_0”;
  • 假设a_{n-1}是“亮”的、a_n是“暗”的、b_1是“”的、c_1是“”的,,按下a_n的按钮后,四盏灯的状态变为a_{n-1}“暗”、a_n“亮”、b_1“暗”、a_n“亮”

Karashi想知道,他能不能将所有灯都关闭(将所有灯都改为“暗”),如果能的话,他最少需要按几下按钮。

输入描述:

第一行输入三个正整数n,m,k\ (1\leq n,m,k\leq 2*10^5),表示灯泡数量。
第二行输入一个长为,且仅包含字符'0'和'1'的字符串,表示排灯泡的状态;
第三行输入一个长为m,且仅包含字符'0'和'1'的字符串,表示排灯泡的状态;
第三行输入一个长为m,且仅包含字符'0'和'1'的字符串,表示排灯泡的状态;
第三行输入一个长为m,且仅包含字符'0'和'1'的字符串,表示排灯泡的状态。
其中'1'表示当前灯泡为“亮”,'0'表示当前灯泡为“暗”。

输出描述:

如果不能将所有灯关闭,则输出“NO”;
如果能将所有灯关闭,则第一行输出“YES”,第二行输出一个整数,表示Karashi需要按按钮的最少数量。
示例1

输入

复制
3 2 4
001
01
10
0010

输出

复制
YES
3

说明

操作顺序:c_1
示例2

输入

复制
2 2 1
01
00
01
0

输出

复制
NO
示例3

输入

复制
1 1 1
1
1
1
1

输出

复制
YES
4