#include <bits/stdc++.h>
using namespace std;
int n;
string str;
const int NAX = 1e5 + 10;
int dp[NAX][2][3];
int Set(int i) {
  if (i == 1)
    return 2;
  else
    return i;
}
bool same(char ch, int i) { return (ch - '0') == i; }
int Brute(int i, int j, int k) {
  if (i == n) return 0;
  int &ans = dp[i][j][k];
  if (ans != -1) return ans;
  if (same(str[i], j)) {
    ans = Brute(i + 1, j ^ 1, Set(k)) + 1;
    if (k != 2) ans = max(ans, Brute(i + 1, j, 1));
  } else {
    ans = Brute(i + 1, j, Set(k));
    if (k != 2) ans = max(ans, Brute(i + 1, j ^ 1, 1) + 1);
  }
  return ans;
}
void solve() {
  cin >> n >> str;
  memset(dp, -1, sizeof(dp));
  cout << max(Brute(0, 0, 0), Brute(0, 1, 0));
}
int main() {
  ios_base ::sync_with_stdio(false), cin.tie(nullptr);
  ;
  int tt;
  tt = 1;
  for (int i = 1; i <= tt; ++i) {
    solve();
  }
  return 0;
}
